﻿2026-06-21T01:36:44.8867920Z ##[group]Run ./traceable-reqs check --json
2026-06-21T01:36:44.8868309Z [36;1m./traceable-reqs check --json[0m
2026-06-21T01:36:44.8881220Z shell: /usr/bin/bash -e {0}
2026-06-21T01:36:44.8881492Z ##[endgroup]
2026-06-21T01:36:44.9113228Z {
2026-06-21T01:36:44.9113782Z   "schemaVersion": 1,
2026-06-21T01:36:44.9114258Z   "summary": {
2026-06-21T01:36:44.9114695Z     "requirementCount": 275,
2026-06-21T01:36:44.9115918Z     "completeCount": 275,
2026-06-21T01:36:44.9116353Z     "incompleteCount": 0,
2026-06-21T01:36:44.9116786Z     "findingCount": 0
2026-06-21T01:36:44.9117176Z   },
2026-06-21T01:36:44.9117536Z   "requirements": [
2026-06-21T01:36:44.9117904Z     {
2026-06-21T01:36:44.9118715Z       "id": "REQ-API-1",
2026-06-21T01:36:44.9119400Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T01:36:44.9120029Z       "requiredStages": [
2026-06-21T01:36:44.9120434Z         "impl",
2026-06-21T01:36:44.9120788Z         "unit",
2026-06-21T01:36:44.9121146Z         "int"
2026-06-21T01:36:44.9121579Z       ],
2026-06-21T01:36:44.9121912Z       "stages": {
2026-06-21T01:36:44.9122293Z         "doc": {
2026-06-21T01:36:44.9122672Z           "complete": false,
2026-06-21T01:36:44.9123102Z           "evidence": []
2026-06-21T01:36:44.9123502Z         },
2026-06-21T01:36:44.9123864Z         "impl": {
2026-06-21T01:36:44.9124255Z           "complete": true,
2026-06-21T01:36:44.9124676Z           "evidence": [
2026-06-21T01:36:44.9125061Z             {
2026-06-21T01:36:44.9125473Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9125979Z               "line": 15
2026-06-21T01:36:44.9126322Z             }
2026-06-21T01:36:44.9126636Z           ]
2026-06-21T01:36:44.9126937Z         },
2026-06-21T01:36:44.9127233Z         "int": {
2026-06-21T01:36:44.9127557Z           "complete": true,
2026-06-21T01:36:44.9127912Z           "evidence": [
2026-06-21T01:36:44.9128240Z             {
2026-06-21T01:36:44.9128598Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:44.9129099Z               "line": 13
2026-06-21T01:36:44.9129437Z             }
2026-06-21T01:36:44.9129733Z           ]
2026-06-21T01:36:44.9130014Z         },
2026-06-21T01:36:44.9130319Z         "unit": {
2026-06-21T01:36:44.9130642Z           "complete": true,
2026-06-21T01:36:44.9130994Z           "evidence": [
2026-06-21T01:36:44.9131309Z             {
2026-06-21T01:36:44.9131663Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9132091Z               "line": 717
2026-06-21T01:36:44.9132434Z             },
2026-06-21T01:36:44.9132731Z             {
2026-06-21T01:36:44.9133076Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9133504Z               "line": 804
2026-06-21T01:36:44.9133847Z             }
2026-06-21T01:36:44.9134143Z           ]
2026-06-21T01:36:44.9134438Z         }
2026-06-21T01:36:44.9134729Z       }
2026-06-21T01:36:44.9135015Z     },
2026-06-21T01:36:44.9135311Z     {
2026-06-21T01:36:44.9135621Z       "id": "REQ-API-2",
2026-06-21T01:36:44.9136171Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T01:36:44.9136762Z       "requiredStages": [
2026-06-21T01:36:44.9137116Z         "impl",
2026-06-21T01:36:44.9137441Z         "unit",
2026-06-21T01:36:44.9137751Z         "int"
2026-06-21T01:36:44.9138051Z       ],
2026-06-21T01:36:44.9138354Z       "stages": {
2026-06-21T01:36:44.9138671Z         "doc": {
2026-06-21T01:36:44.9139091Z           "complete": false,
2026-06-21T01:36:44.9139458Z           "evidence": []
2026-06-21T01:36:44.9139815Z         },
2026-06-21T01:36:44.9140111Z         "impl": {
2026-06-21T01:36:44.9140468Z           "complete": true,
2026-06-21T01:36:44.9140836Z           "evidence": [
2026-06-21T01:36:44.9141154Z             {
2026-06-21T01:36:44.9141521Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:36:44.9141942Z               "line": 17
2026-06-21T01:36:44.9142276Z             },
2026-06-21T01:36:44.9142581Z             {
2026-06-21T01:36:44.9143220Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:44.9143655Z               "line": 20
2026-06-21T01:36:44.9143993Z             },
2026-06-21T01:36:44.9144294Z             {
2026-06-21T01:36:44.9144650Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:44.9145080Z               "line": 142
2026-06-21T01:36:44.9145429Z             },
2026-06-21T01:36:44.9145744Z             {
2026-06-21T01:36:44.9146116Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9146564Z               "line": 24
2026-06-21T01:36:44.9146902Z             },
2026-06-21T01:36:44.9147203Z             {
2026-06-21T01:36:44.9147738Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9148071Z               "line": 41
2026-06-21T01:36:44.9148330Z             },
2026-06-21T01:36:44.9148592Z             {
2026-06-21T01:36:44.9149084Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9149565Z               "line": 213
2026-06-21T01:36:44.9149919Z             },
2026-06-21T01:36:44.9150238Z             {
2026-06-21T01:36:44.9150605Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9151062Z               "line": 255
2026-06-21T01:36:44.9151401Z             },
2026-06-21T01:36:44.9151709Z             {
2026-06-21T01:36:44.9152081Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9152540Z               "line": 334
2026-06-21T01:36:44.9152864Z             },
2026-06-21T01:36:44.9153165Z             {
2026-06-21T01:36:44.9153518Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9153959Z               "line": 397
2026-06-21T01:36:44.9154314Z             },
2026-06-21T01:36:44.9154619Z             {
2026-06-21T01:36:44.9154991Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9155431Z               "line": 436
2026-06-21T01:36:44.9155764Z             },
2026-06-21T01:36:44.9156075Z             {
2026-06-21T01:36:44.9156441Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:44.9156864Z               "line": 17
2026-06-21T01:36:44.9157200Z             },
2026-06-21T01:36:44.9157515Z             {
2026-06-21T01:36:44.9157844Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:44.9158130Z               "line": 30
2026-06-21T01:36:44.9158335Z             },
2026-06-21T01:36:44.9158541Z             {
2026-06-21T01:36:44.9158774Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:44.9159157Z               "line": 63
2026-06-21T01:36:44.9159398Z             },
2026-06-21T01:36:44.9159611Z             {
2026-06-21T01:36:44.9159858Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:44.9160159Z               "line": 77
2026-06-21T01:36:44.9160387Z             }
2026-06-21T01:36:44.9160583Z           ]
2026-06-21T01:36:44.9160784Z         },
2026-06-21T01:36:44.9160983Z         "int": {
2026-06-21T01:36:44.9161208Z           "complete": true,
2026-06-21T01:36:44.9161462Z           "evidence": [
2026-06-21T01:36:44.9161684Z             {
2026-06-21T01:36:44.9161937Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:44.9162232Z               "line": 14
2026-06-21T01:36:44.9162466Z             },
2026-06-21T01:36:44.9162670Z             {
2026-06-21T01:36:44.9162918Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:44.9163214Z               "line": 187
2026-06-21T01:36:44.9163443Z             }
2026-06-21T01:36:44.9163648Z           ]
2026-06-21T01:36:44.9163839Z         },
2026-06-21T01:36:44.9164035Z         "unit": {
2026-06-21T01:36:44.9164268Z           "complete": true,
2026-06-21T01:36:44.9164505Z           "evidence": [
2026-06-21T01:36:44.9164719Z             {
2026-06-21T01:36:44.9164965Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:36:44.9165261Z               "line": 82
2026-06-21T01:36:44.9165494Z             },
2026-06-21T01:36:44.9165709Z             {
2026-06-21T01:36:44.9166147Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:44.9166448Z               "line": 279
2026-06-21T01:36:44.9166677Z             },
2026-06-21T01:36:44.9166888Z             {
2026-06-21T01:36:44.9167160Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9167453Z               "line": 709
2026-06-21T01:36:44.9167689Z             },
2026-06-21T01:36:44.9167890Z             {
2026-06-21T01:36:44.9168147Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9168453Z               "line": 720
2026-06-21T01:36:44.9168680Z             },
2026-06-21T01:36:44.9168891Z             {
2026-06-21T01:36:44.9169455Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9169750Z               "line": 873
2026-06-21T01:36:44.9169986Z             },
2026-06-21T01:36:44.9170195Z             {
2026-06-21T01:36:44.9170452Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9170739Z               "line": 919
2026-06-21T01:36:44.9170980Z             },
2026-06-21T01:36:44.9171238Z             {
2026-06-21T01:36:44.9171615Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:44.9172054Z               "line": 143
2026-06-21T01:36:44.9172406Z             },
2026-06-21T01:36:44.9172721Z             {
2026-06-21T01:36:44.9173116Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:44.9173574Z               "line": 187
2026-06-21T01:36:44.9173933Z             }
2026-06-21T01:36:44.9174242Z           ]
2026-06-21T01:36:44.9174562Z         }
2026-06-21T01:36:44.9174877Z       }
2026-06-21T01:36:44.9175184Z     },
2026-06-21T01:36:44.9175506Z     {
2026-06-21T01:36:44.9175841Z       "id": "REQ-API-3",
2026-06-21T01:36:44.9176312Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T01:36:44.9176823Z       "requiredStages": [
2026-06-21T01:36:44.9177195Z         "impl",
2026-06-21T01:36:44.9177538Z         "unit",
2026-06-21T01:36:44.9177871Z         "int"
2026-06-21T01:36:44.9178216Z       ],
2026-06-21T01:36:44.9178527Z       "stages": {
2026-06-21T01:36:44.9178865Z         "doc": {
2026-06-21T01:36:44.9179299Z           "complete": false,
2026-06-21T01:36:44.9179686Z           "evidence": []
2026-06-21T01:36:44.9180039Z         },
2026-06-21T01:36:44.9180354Z         "impl": {
2026-06-21T01:36:44.9180718Z           "complete": true,
2026-06-21T01:36:44.9181112Z           "evidence": [
2026-06-21T01:36:44.9181464Z             {
2026-06-21T01:36:44.9182071Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:44.9182738Z               "line": 27
2026-06-21T01:36:44.9183333Z             },
2026-06-21T01:36:44.9183886Z             {
2026-06-21T01:36:44.9184473Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9185074Z               "line": 566
2026-06-21T01:36:44.9185616Z             }
2026-06-21T01:36:44.9186081Z           ]
2026-06-21T01:36:44.9186605Z         },
2026-06-21T01:36:44.9187111Z         "int": {
2026-06-21T01:36:44.9217425Z           "complete": true,
2026-06-21T01:36:44.9217848Z           "evidence": [
2026-06-21T01:36:44.9218201Z             {
2026-06-21T01:36:44.9218609Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:44.9219168Z               "line": 261
2026-06-21T01:36:44.9219511Z             }
2026-06-21T01:36:44.9219825Z           ]
2026-06-21T01:36:44.9220125Z         },
2026-06-21T01:36:44.9220420Z         "unit": {
2026-06-21T01:36:44.9220772Z           "complete": true,
2026-06-21T01:36:44.9221138Z           "evidence": [
2026-06-21T01:36:44.9221467Z             {
2026-06-21T01:36:44.9221858Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:44.9222335Z               "line": 280
2026-06-21T01:36:44.9222683Z             },
2026-06-21T01:36:44.9223000Z             {
2026-06-21T01:36:44.9223390Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9223840Z               "line": 948
2026-06-21T01:36:44.9224188Z             }
2026-06-21T01:36:44.9224745Z           ]
2026-06-21T01:36:44.9225065Z         }
2026-06-21T01:36:44.9225365Z       }
2026-06-21T01:36:44.9225654Z     },
2026-06-21T01:36:44.9225950Z     {
2026-06-21T01:36:44.9226274Z       "id": "REQ-API-4",
2026-06-21T01:36:44.9229290Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T01:36:44.9231756Z       "requiredStages": [
2026-06-21T01:36:44.9232128Z         "doc",
2026-06-21T01:36:44.9232443Z         "impl",
2026-06-21T01:36:44.9232743Z         "unit"
2026-06-21T01:36:44.9232962Z       ],
2026-06-21T01:36:44.9233173Z       "stages": {
2026-06-21T01:36:44.9233380Z         "doc": {
2026-06-21T01:36:44.9233593Z           "complete": true,
2026-06-21T01:36:44.9233837Z           "evidence": [
2026-06-21T01:36:44.9234065Z             {
2026-06-21T01:36:44.9234308Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9234570Z               "line": 149
2026-06-21T01:36:44.9234814Z             }
2026-06-21T01:36:44.9235024Z           ]
2026-06-21T01:36:44.9235219Z         },
2026-06-21T01:36:44.9235434Z         "impl": {
2026-06-21T01:36:44.9235668Z           "complete": true,
2026-06-21T01:36:44.9235906Z           "evidence": [
2026-06-21T01:36:44.9236138Z             {
2026-06-21T01:36:44.9236402Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9236711Z               "line": 484
2026-06-21T01:36:44.9236940Z             }
2026-06-21T01:36:44.9237154Z           ]
2026-06-21T01:36:44.9237345Z         },
2026-06-21T01:36:44.9237559Z         "int": {
2026-06-21T01:36:44.9237798Z           "complete": false,
2026-06-21T01:36:44.9238060Z           "evidence": []
2026-06-21T01:36:44.9238290Z         },
2026-06-21T01:36:44.9238507Z         "unit": {
2026-06-21T01:36:44.9238734Z           "complete": true,
2026-06-21T01:36:44.9243371Z           "evidence": [
2026-06-21T01:36:44.9243748Z             {
2026-06-21T01:36:44.9244125Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9244572Z               "line": 657
2026-06-21T01:36:44.9244921Z             },
2026-06-21T01:36:44.9245346Z             {
2026-06-21T01:36:44.9245737Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9246205Z               "line": 681
2026-06-21T01:36:44.9246638Z             },
2026-06-21T01:36:44.9246981Z             {
2026-06-21T01:36:44.9247247Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9247557Z               "line": 705
2026-06-21T01:36:44.9247791Z             }
2026-06-21T01:36:44.9248000Z           ]
2026-06-21T01:36:44.9248201Z         }
2026-06-21T01:36:44.9248396Z       }
2026-06-21T01:36:44.9248591Z     },
2026-06-21T01:36:44.9248788Z     {
2026-06-21T01:36:44.9249115Z       "id": "REQ-ARCH-1",
2026-06-21T01:36:44.9249470Z       "title": "Many small acyclically-layered crates",
2026-06-21T01:36:44.9249785Z       "requiredStages": [
2026-06-21T01:36:44.9250028Z         "impl"
2026-06-21T01:36:44.9250242Z       ],
2026-06-21T01:36:44.9250453Z       "stages": {
2026-06-21T01:36:44.9250667Z         "doc": {
2026-06-21T01:36:44.9250901Z           "complete": false,
2026-06-21T01:36:44.9251158Z           "evidence": []
2026-06-21T01:36:44.9251388Z         },
2026-06-21T01:36:44.9251587Z         "impl": {
2026-06-21T01:36:44.9251821Z           "complete": true,
2026-06-21T01:36:44.9252067Z           "evidence": [
2026-06-21T01:36:44.9252299Z             {
2026-06-21T01:36:44.9252556Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T01:36:44.9252842Z               "line": 18
2026-06-21T01:36:44.9253067Z             },
2026-06-21T01:36:44.9253430Z             {
2026-06-21T01:36:44.9253697Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T01:36:44.9253993Z               "line": 12
2026-06-21T01:36:44.9254222Z             },
2026-06-21T01:36:44.9254430Z             {
2026-06-21T01:36:44.9254681Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T01:36:44.9254967Z               "line": 12
2026-06-21T01:36:44.9255195Z             }
2026-06-21T01:36:44.9255404Z           ]
2026-06-21T01:36:44.9255600Z         },
2026-06-21T01:36:44.9255806Z         "int": {
2026-06-21T01:36:44.9256048Z           "complete": false,
2026-06-21T01:36:44.9256302Z           "evidence": []
2026-06-21T01:36:44.9256645Z         },
2026-06-21T01:36:44.9256851Z         "unit": {
2026-06-21T01:36:44.9257085Z           "complete": false,
2026-06-21T01:36:44.9257335Z           "evidence": []
2026-06-21T01:36:44.9257560Z         }
2026-06-21T01:36:44.9257750Z       }
2026-06-21T01:36:44.9257950Z     },
2026-06-21T01:36:44.9258150Z     {
2026-06-21T01:36:44.9258379Z       "id": "REQ-ARCH-2",
2026-06-21T01:36:44.9258733Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T01:36:44.9259204Z       "requiredStages": [
2026-06-21T01:36:44.9259452Z         "impl"
2026-06-21T01:36:44.9259656Z       ],
2026-06-21T01:36:44.9259864Z       "stages": {
2026-06-21T01:36:44.9260084Z         "doc": {
2026-06-21T01:36:44.9260317Z           "complete": false,
2026-06-21T01:36:44.9260578Z           "evidence": []
2026-06-21T01:36:44.9260807Z         },
2026-06-21T01:36:44.9261008Z         "impl": {
2026-06-21T01:36:44.9261251Z           "complete": true,
2026-06-21T01:36:44.9261499Z           "evidence": [
2026-06-21T01:36:44.9261723Z             {
2026-06-21T01:36:44.9261991Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T01:36:44.9262282Z               "line": 18
2026-06-21T01:36:44.9262518Z             }
2026-06-21T01:36:44.9262731Z           ]
2026-06-21T01:36:44.9262932Z         },
2026-06-21T01:36:44.9263136Z         "int": {
2026-06-21T01:36:44.9263379Z           "complete": false,
2026-06-21T01:36:44.9263623Z           "evidence": []
2026-06-21T01:36:44.9263838Z         },
2026-06-21T01:36:44.9264037Z         "unit": {
2026-06-21T01:36:44.9264276Z           "complete": false,
2026-06-21T01:36:44.9264524Z           "evidence": []
2026-06-21T01:36:44.9264753Z         }
2026-06-21T01:36:44.9264952Z       }
2026-06-21T01:36:44.9265152Z     },
2026-06-21T01:36:44.9265345Z     {
2026-06-21T01:36:44.9265565Z       "id": "REQ-ARCH-3",
2026-06-21T01:36:44.9265941Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T01:36:44.9266337Z       "requiredStages": [
2026-06-21T01:36:44.9266566Z         "impl",
2026-06-21T01:36:44.9266786Z         "unit"
2026-06-21T01:36:44.9267005Z       ],
2026-06-21T01:36:44.9267210Z       "stages": {
2026-06-21T01:36:44.9267439Z         "doc": {
2026-06-21T01:36:44.9267659Z           "complete": false,
2026-06-21T01:36:44.9267919Z           "evidence": []
2026-06-21T01:36:44.9268152Z         },
2026-06-21T01:36:44.9268349Z         "impl": {
2026-06-21T01:36:44.9268576Z           "complete": true,
2026-06-21T01:36:44.9268824Z           "evidence": [
2026-06-21T01:36:44.9269134Z             {
2026-06-21T01:36:44.9269397Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:36:44.9269693Z               "line": 34
2026-06-21T01:36:44.9269918Z             },
2026-06-21T01:36:44.9270139Z             {
2026-06-21T01:36:44.9270424Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:36:44.9270719Z               "line": 41
2026-06-21T01:36:44.9270944Z             }
2026-06-21T01:36:44.9271148Z           ]
2026-06-21T01:36:44.9271358Z         },
2026-06-21T01:36:44.9271578Z         "int": {
2026-06-21T01:36:44.9271807Z           "complete": false,
2026-06-21T01:36:44.9272059Z           "evidence": []
2026-06-21T01:36:44.9272292Z         },
2026-06-21T01:36:44.9272495Z         "unit": {
2026-06-21T01:36:44.9272722Z           "complete": true,
2026-06-21T01:36:44.9273064Z           "evidence": [
2026-06-21T01:36:44.9273291Z             {
2026-06-21T01:36:44.9273544Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:36:44.9273840Z               "line": 51
2026-06-21T01:36:44.9274059Z             },
2026-06-21T01:36:44.9274268Z             {
2026-06-21T01:36:44.9274521Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:36:44.9274812Z               "line": 71
2026-06-21T01:36:44.9275047Z             },
2026-06-21T01:36:44.9275251Z             {
2026-06-21T01:36:44.9275493Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T01:36:44.9275792Z               "line": 83
2026-06-21T01:36:44.9276121Z             }
2026-06-21T01:36:44.9276330Z           ]
2026-06-21T01:36:44.9276529Z         }
2026-06-21T01:36:44.9276731Z       }
2026-06-21T01:36:44.9276926Z     },
2026-06-21T01:36:44.9277126Z     {
2026-06-21T01:36:44.9277332Z       "id": "REQ-ARCH-4",
2026-06-21T01:36:44.9277679Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T01:36:44.9278051Z       "requiredStages": [
2026-06-21T01:36:44.9278295Z         "impl",
2026-06-21T01:36:44.9278517Z         "unit"
2026-06-21T01:36:44.9278741Z       ],
2026-06-21T01:36:44.9279014Z       "stages": {
2026-06-21T01:36:44.9279304Z         "doc": {
2026-06-21T01:36:44.9279543Z           "complete": false,
2026-06-21T01:36:44.9279795Z           "evidence": []
2026-06-21T01:36:44.9280028Z         },
2026-06-21T01:36:44.9280248Z         "impl": {
2026-06-21T01:36:44.9280478Z           "complete": true,
2026-06-21T01:36:44.9280733Z           "evidence": [
2026-06-21T01:36:44.9280960Z             {
2026-06-21T01:36:44.9281223Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9281523Z               "line": 165
2026-06-21T01:36:44.9281752Z             },
2026-06-21T01:36:44.9281966Z             {
2026-06-21T01:36:44.9282233Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9282519Z               "line": 188
2026-06-21T01:36:44.9282749Z             },
2026-06-21T01:36:44.9282963Z             {
2026-06-21T01:36:44.9283206Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9283501Z               "line": 208
2026-06-21T01:36:44.9283729Z             },
2026-06-21T01:36:44.9283946Z             {
2026-06-21T01:36:44.9284204Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9284504Z               "line": 223
2026-06-21T01:36:44.9284729Z             },
2026-06-21T01:36:44.9284943Z             {
2026-06-21T01:36:44.9285186Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9285482Z               "line": 273
2026-06-21T01:36:44.9285710Z             }
2026-06-21T01:36:44.9285917Z           ]
2026-06-21T01:36:44.9286119Z         },
2026-06-21T01:36:44.9286333Z         "int": {
2026-06-21T01:36:44.9286566Z           "complete": false,
2026-06-21T01:36:44.9286823Z           "evidence": []
2026-06-21T01:36:44.9287052Z         },
2026-06-21T01:36:44.9287257Z         "unit": {
2026-06-21T01:36:44.9287486Z           "complete": true,
2026-06-21T01:36:44.9287738Z           "evidence": [
2026-06-21T01:36:44.9287963Z             {
2026-06-21T01:36:44.9288216Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9288526Z               "line": 334
2026-06-21T01:36:44.9288760Z             },
2026-06-21T01:36:44.9289063Z             {
2026-06-21T01:36:44.9289339Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9289630Z               "line": 344
2026-06-21T01:36:44.9289884Z             },
2026-06-21T01:36:44.9290098Z             {
2026-06-21T01:36:44.9290350Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9290646Z               "line": 355
2026-06-21T01:36:44.9290879Z             },
2026-06-21T01:36:44.9291086Z             {
2026-06-21T01:36:44.9291332Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9291624Z               "line": 366
2026-06-21T01:36:44.9291997Z             },
2026-06-21T01:36:44.9292216Z             {
2026-06-21T01:36:44.9292474Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9292765Z               "line": 378
2026-06-21T01:36:44.9292999Z             },
2026-06-21T01:36:44.9293203Z             {
2026-06-21T01:36:44.9293456Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9293741Z               "line": 391
2026-06-21T01:36:44.9293977Z             },
2026-06-21T01:36:44.9294184Z             {
2026-06-21T01:36:44.9294435Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9294726Z               "line": 402
2026-06-21T01:36:44.9295064Z             },
2026-06-21T01:36:44.9295265Z             {
2026-06-21T01:36:44.9295523Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9295804Z               "line": 419
2026-06-21T01:36:44.9296037Z             },
2026-06-21T01:36:44.9296247Z             {
2026-06-21T01:36:44.9296501Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:44.9296794Z               "line": 547
2026-06-21T01:36:44.9297029Z             }
2026-06-21T01:36:44.9297227Z           ]
2026-06-21T01:36:44.9297421Z         }
2026-06-21T01:36:44.9297621Z       }
2026-06-21T01:36:44.9297822Z     },
2026-06-21T01:36:44.9298022Z     {
2026-06-21T01:36:44.9298232Z       "id": "REQ-CLI-1",
2026-06-21T01:36:44.9299805Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T01:36:44.9301087Z       "requiredStages": [
2026-06-21T01:36:44.9301326Z         "impl",
2026-06-21T01:36:44.9301540Z         "unit"
2026-06-21T01:36:44.9301749Z       ],
2026-06-21T01:36:44.9301949Z       "stages": {
2026-06-21T01:36:44.9302175Z         "doc": {
2026-06-21T01:36:44.9302405Z           "complete": false,
2026-06-21T01:36:44.9318304Z           "evidence": []
2026-06-21T01:36:44.9318642Z         },
2026-06-21T01:36:44.9319023Z         "impl": {
2026-06-21T01:36:44.9319719Z           "complete": true,
2026-06-21T01:36:44.9320086Z           "evidence": [
2026-06-21T01:36:44.9320382Z             {
2026-06-21T01:36:44.9320700Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9321058Z               "line": 225
2026-06-21T01:36:44.9321349Z             },
2026-06-21T01:36:44.9321611Z             {
2026-06-21T01:36:44.9321935Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9322293Z               "line": 1093
2026-06-21T01:36:44.9322569Z             },
2026-06-21T01:36:44.9322822Z             {
2026-06-21T01:36:44.9323112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9323459Z               "line": 1720
2026-06-21T01:36:44.9323750Z             },
2026-06-21T01:36:44.9323988Z             {
2026-06-21T01:36:44.9324274Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9324612Z               "line": 3124
2026-06-21T01:36:44.9324893Z             }
2026-06-21T01:36:44.9325142Z           ]
2026-06-21T01:36:44.9325384Z         },
2026-06-21T01:36:44.9325633Z         "int": {
2026-06-21T01:36:44.9325913Z           "complete": false,
2026-06-21T01:36:44.9326230Z           "evidence": []
2026-06-21T01:36:44.9326506Z         },
2026-06-21T01:36:44.9326730Z         "unit": {
2026-06-21T01:36:44.9326960Z           "complete": true,
2026-06-21T01:36:44.9327203Z           "evidence": [
2026-06-21T01:36:44.9327436Z             {
2026-06-21T01:36:44.9327679Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9327965Z               "line": 7947
2026-06-21T01:36:44.9328200Z             }
2026-06-21T01:36:44.9328403Z           ]
2026-06-21T01:36:44.9328607Z         }
2026-06-21T01:36:44.9328806Z       }
2026-06-21T01:36:44.9329306Z     },
2026-06-21T01:36:44.9329507Z     {
2026-06-21T01:36:44.9329712Z       "id": "REQ-CLI-2",
2026-06-21T01:36:44.9330632Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T01:36:44.9331532Z       "requiredStages": [
2026-06-21T01:36:44.9331776Z         "impl",
2026-06-21T01:36:44.9331991Z         "unit"
2026-06-21T01:36:44.9332204Z       ],
2026-06-21T01:36:44.9332405Z       "stages": {
2026-06-21T01:36:44.9332734Z         "doc": {
2026-06-21T01:36:44.9332964Z           "complete": false,
2026-06-21T01:36:44.9333220Z           "evidence": []
2026-06-21T01:36:44.9333444Z         },
2026-06-21T01:36:44.9333648Z         "impl": {
2026-06-21T01:36:44.9333870Z           "complete": true,
2026-06-21T01:36:44.9334109Z           "evidence": [
2026-06-21T01:36:44.9334343Z             {
2026-06-21T01:36:44.9334591Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9334897Z               "line": 414
2026-06-21T01:36:44.9335119Z             },
2026-06-21T01:36:44.9335330Z             {
2026-06-21T01:36:44.9335592Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:36:44.9335878Z               "line": 97
2026-06-21T01:36:44.9336098Z             },
2026-06-21T01:36:44.9336302Z             {
2026-06-21T01:36:44.9336562Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:44.9336848Z               "line": 256
2026-06-21T01:36:44.9337066Z             },
2026-06-21T01:36:44.9337286Z             {
2026-06-21T01:36:44.9337539Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9337811Z               "line": 434
2026-06-21T01:36:44.9338039Z             },
2026-06-21T01:36:44.9338244Z             {
2026-06-21T01:36:44.9338479Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9338774Z               "line": 1174
2026-06-21T01:36:44.9339120Z             },
2026-06-21T01:36:44.9339323Z             {
2026-06-21T01:36:44.9339575Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9339866Z               "line": 1958
2026-06-21T01:36:44.9340096Z             },
2026-06-21T01:36:44.9340302Z             {
2026-06-21T01:36:44.9340544Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9340821Z               "line": 2047
2026-06-21T01:36:44.9341054Z             },
2026-06-21T01:36:44.9341265Z             {
2026-06-21T01:36:44.9341502Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9341792Z               "line": 2108
2026-06-21T01:36:44.9342023Z             }
2026-06-21T01:36:44.9342222Z           ]
2026-06-21T01:36:44.9342421Z         },
2026-06-21T01:36:44.9342618Z         "int": {
2026-06-21T01:36:44.9342846Z           "complete": false,
2026-06-21T01:36:44.9343103Z           "evidence": []
2026-06-21T01:36:44.9343327Z         },
2026-06-21T01:36:44.9343529Z         "unit": {
2026-06-21T01:36:44.9343762Z           "complete": true,
2026-06-21T01:36:44.9344004Z           "evidence": [
2026-06-21T01:36:44.9344223Z             {
2026-06-21T01:36:44.9344483Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:44.9344783Z               "line": 338
2026-06-21T01:36:44.9345007Z             },
2026-06-21T01:36:44.9345213Z             {
2026-06-21T01:36:44.9345447Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9345742Z               "line": 8102
2026-06-21T01:36:44.9345961Z             }
2026-06-21T01:36:44.9346157Z           ]
2026-06-21T01:36:44.9346353Z         }
2026-06-21T01:36:44.9346557Z       }
2026-06-21T01:36:44.9346749Z     },
2026-06-21T01:36:44.9346946Z     {
2026-06-21T01:36:44.9347155Z       "id": "REQ-CLI-3",
2026-06-21T01:36:44.9348085Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T01:36:44.9349344Z       "requiredStages": [
2026-06-21T01:36:44.9349585Z         "impl",
2026-06-21T01:36:44.9349802Z         "unit"
2026-06-21T01:36:44.9350003Z       ],
2026-06-21T01:36:44.9350202Z       "stages": {
2026-06-21T01:36:44.9350417Z         "doc": {
2026-06-21T01:36:44.9350642Z           "complete": false,
2026-06-21T01:36:44.9350909Z           "evidence": []
2026-06-21T01:36:44.9351142Z         },
2026-06-21T01:36:44.9351343Z         "impl": {
2026-06-21T01:36:44.9351563Z           "complete": true,
2026-06-21T01:36:44.9351920Z           "evidence": [
2026-06-21T01:36:44.9352140Z             {
2026-06-21T01:36:44.9352385Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9352671Z               "line": 1087
2026-06-21T01:36:44.9352896Z             }
2026-06-21T01:36:44.9353106Z           ]
2026-06-21T01:36:44.9353306Z         },
2026-06-21T01:36:44.9353497Z         "int": {
2026-06-21T01:36:44.9353726Z           "complete": false,
2026-06-21T01:36:44.9353968Z           "evidence": []
2026-06-21T01:36:44.9354188Z         },
2026-06-21T01:36:44.9354394Z         "unit": {
2026-06-21T01:36:44.9354626Z           "complete": true,
2026-06-21T01:36:44.9354876Z           "evidence": [
2026-06-21T01:36:44.9355091Z             {
2026-06-21T01:36:44.9355329Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9355610Z               "line": 7912
2026-06-21T01:36:44.9355839Z             }
2026-06-21T01:36:44.9356031Z           ]
2026-06-21T01:36:44.9356235Z         }
2026-06-21T01:36:44.9356435Z       }
2026-06-21T01:36:44.9356632Z     },
2026-06-21T01:36:44.9356817Z     {
2026-06-21T01:36:44.9357027Z       "id": "REQ-CLI-4",
2026-06-21T01:36:44.9377340Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T01:36:44.9379480Z       "requiredStages": [],
2026-06-21T01:36:44.9379737Z       "stages": {
2026-06-21T01:36:44.9379960Z         "doc": {
2026-06-21T01:36:44.9380213Z           "complete": false,
2026-06-21T01:36:44.9380465Z           "evidence": []
2026-06-21T01:36:44.9380700Z         },
2026-06-21T01:36:44.9380905Z         "impl": {
2026-06-21T01:36:44.9381137Z           "complete": true,
2026-06-21T01:36:44.9381383Z           "evidence": [
2026-06-21T01:36:44.9381602Z             {
2026-06-21T01:36:44.9381859Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9382145Z               "line": 5678
2026-06-21T01:36:44.9382361Z             }
2026-06-21T01:36:44.9382566Z           ]
2026-06-21T01:36:44.9382775Z         },
2026-06-21T01:36:44.9382980Z         "int": {
2026-06-21T01:36:44.9383210Z           "complete": false,
2026-06-21T01:36:44.9383462Z           "evidence": []
2026-06-21T01:36:44.9383690Z         },
2026-06-21T01:36:44.9383887Z         "unit": {
2026-06-21T01:36:44.9384119Z           "complete": false,
2026-06-21T01:36:44.9384362Z           "evidence": []
2026-06-21T01:36:44.9384586Z         }
2026-06-21T01:36:44.9384782Z       }
2026-06-21T01:36:44.9384972Z     },
2026-06-21T01:36:44.9385168Z     {
2026-06-21T01:36:44.9385392Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T01:36:44.9388713Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T01:36:44.9392043Z       "requiredStages": [
2026-06-21T01:36:44.9392376Z         "impl",
2026-06-21T01:36:44.9392715Z         "unit"
2026-06-21T01:36:44.9393102Z       ],
2026-06-21T01:36:44.9393422Z       "stages": {
2026-06-21T01:36:44.9393765Z         "doc": {
2026-06-21T01:36:44.9394109Z           "complete": false,
2026-06-21T01:36:44.9394457Z           "evidence": []
2026-06-21T01:36:44.9394855Z         },
2026-06-21T01:36:44.9395156Z         "impl": {
2026-06-21T01:36:44.9395499Z           "complete": true,
2026-06-21T01:36:44.9395875Z           "evidence": [
2026-06-21T01:36:44.9396185Z             {
2026-06-21T01:36:44.9396562Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9396957Z               "line": 8
2026-06-21T01:36:44.9397255Z             },
2026-06-21T01:36:44.9397661Z             {
2026-06-21T01:36:44.9397990Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9398433Z               "line": 51
2026-06-21T01:36:44.9398752Z             },
2026-06-21T01:36:44.9399109Z             {
2026-06-21T01:36:44.9399550Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9399947Z               "line": 82
2026-06-21T01:36:44.9400346Z             },
2026-06-21T01:36:44.9400647Z             {
2026-06-21T01:36:44.9400966Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9401405Z               "line": 229
2026-06-21T01:36:44.9401715Z             }
2026-06-21T01:36:44.9402045Z           ]
2026-06-21T01:36:44.9402347Z         },
2026-06-21T01:36:44.9402636Z         "int": {
2026-06-21T01:36:44.9403047Z           "complete": false,
2026-06-21T01:36:44.9403391Z           "evidence": []
2026-06-21T01:36:44.9403762Z         },
2026-06-21T01:36:44.9404068Z         "unit": {
2026-06-21T01:36:44.9404392Z           "complete": true,
2026-06-21T01:36:44.9404767Z           "evidence": [
2026-06-21T01:36:44.9405073Z             {
2026-06-21T01:36:44.9405411Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9405883Z               "line": 249
2026-06-21T01:36:44.9406221Z             },
2026-06-21T01:36:44.9406565Z             {
2026-06-21T01:36:44.9406923Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9407280Z               "line": 256
2026-06-21T01:36:44.9407653Z             },
2026-06-21T01:36:44.9407964Z             {
2026-06-21T01:36:44.9408321Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9408769Z               "line": 263
2026-06-21T01:36:44.9409146Z             },
2026-06-21T01:36:44.9409499Z             {
2026-06-21T01:36:44.9409837Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9410232Z               "line": 270
2026-06-21T01:36:44.9410582Z             },
2026-06-21T01:36:44.9410868Z             {
2026-06-21T01:36:44.9411316Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9411685Z               "line": 297
2026-06-21T01:36:44.9412018Z             },
2026-06-21T01:36:44.9412342Z             {
2026-06-21T01:36:44.9412677Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9413111Z               "line": 307
2026-06-21T01:36:44.9413554Z             },
2026-06-21T01:36:44.9413840Z             {
2026-06-21T01:36:44.9414280Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9414642Z               "line": 317
2026-06-21T01:36:44.9415017Z             },
2026-06-21T01:36:44.9415314Z             {
2026-06-21T01:36:44.9415661Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9416094Z               "line": 331
2026-06-21T01:36:44.9416414Z             },
2026-06-21T01:36:44.9416806Z             {
2026-06-21T01:36:44.9417140Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9417511Z               "line": 340
2026-06-21T01:36:44.9418005Z             },
2026-06-21T01:36:44.9418313Z             {
2026-06-21T01:36:44.9418666Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9419163Z               "line": 348
2026-06-21T01:36:44.9419487Z             }
2026-06-21T01:36:44.9419858Z           ]
2026-06-21T01:36:44.9420163Z         }
2026-06-21T01:36:44.9420483Z       }
2026-06-21T01:36:44.9420797Z     },
2026-06-21T01:36:44.9421090Z     {
2026-06-21T01:36:44.9421462Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T01:36:44.9429479Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T01:36:44.9433943Z       "requiredStages": [
2026-06-21T01:36:44.9434297Z         "impl",
2026-06-21T01:36:44.9434640Z         "unit"
2026-06-21T01:36:44.9434960Z       ],
2026-06-21T01:36:44.9435237Z       "stages": {
2026-06-21T01:36:44.9435647Z         "doc": {
2026-06-21T01:36:44.9435958Z           "complete": false,
2026-06-21T01:36:44.9436373Z           "evidence": []
2026-06-21T01:36:44.9436702Z         },
2026-06-21T01:36:44.9436972Z         "impl": {
2026-06-21T01:36:44.9437359Z           "complete": true,
2026-06-21T01:36:44.9437697Z           "evidence": [
2026-06-21T01:36:44.9438040Z             {
2026-06-21T01:36:44.9438449Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9438822Z               "line": 141
2026-06-21T01:36:44.9439269Z             },
2026-06-21T01:36:44.9439596Z             {
2026-06-21T01:36:44.9439973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9440358Z               "line": 1376
2026-06-21T01:36:44.9440687Z             },
2026-06-21T01:36:44.9441036Z             {
2026-06-21T01:36:44.9441389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9441795Z               "line": 2145
2026-06-21T01:36:44.9442132Z             },
2026-06-21T01:36:44.9442435Z             {
2026-06-21T01:36:44.9442797Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9443326Z               "line": 4368
2026-06-21T01:36:44.9443621Z             },
2026-06-21T01:36:44.9444023Z             {
2026-06-21T01:36:44.9444348Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9444740Z               "line": 4466
2026-06-21T01:36:44.9445073Z             },
2026-06-21T01:36:44.9445340Z             {
2026-06-21T01:36:44.9445735Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9446102Z               "line": 5257
2026-06-21T01:36:44.9446446Z             },
2026-06-21T01:36:44.9446794Z             {
2026-06-21T01:36:44.9447109Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9447666Z               "line": 39
2026-06-21T01:36:44.9447976Z             }
2026-06-21T01:36:44.9448305Z           ]
2026-06-21T01:36:44.9448595Z         },
2026-06-21T01:36:44.9448877Z         "int": {
2026-06-21T01:36:44.9449363Z           "complete": false,
2026-06-21T01:36:44.9449729Z           "evidence": []
2026-06-21T01:36:44.9450075Z         },
2026-06-21T01:36:44.9450390Z         "unit": {
2026-06-21T01:36:44.9450719Z           "complete": true,
2026-06-21T01:36:44.9451077Z           "evidence": [
2026-06-21T01:36:44.9451392Z             {
2026-06-21T01:36:44.9451716Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9452168Z               "line": 10272
2026-06-21T01:36:44.9452496Z             },
2026-06-21T01:36:44.9452818Z             {
2026-06-21T01:36:44.9453146Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9453519Z               "line": 281
2026-06-21T01:36:44.9453881Z             },
2026-06-21T01:36:44.9454181Z             {
2026-06-21T01:36:44.9454536Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9454987Z               "line": 358
2026-06-21T01:36:44.9455286Z             },
2026-06-21T01:36:44.9455620Z             {
2026-06-21T01:36:44.9455962Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9463294Z               "line": 381
2026-06-21T01:36:44.9463612Z             },
2026-06-21T01:36:44.9463832Z             {
2026-06-21T01:36:44.9464083Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T01:36:44.9464388Z               "line": 395
2026-06-21T01:36:44.9464613Z             }
2026-06-21T01:36:44.9464810Z           ]
2026-06-21T01:36:44.9464999Z         }
2026-06-21T01:36:44.9465210Z       }
2026-06-21T01:36:44.9465406Z     },
2026-06-21T01:36:44.9465609Z     {
2026-06-21T01:36:44.9465828Z       "id": "REQ-CONSENT-1",
2026-06-21T01:36:44.9466955Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T01:36:44.9468040Z       "requiredStages": [
2026-06-21T01:36:44.9468273Z         "impl",
2026-06-21T01:36:44.9468500Z         "unit"
2026-06-21T01:36:44.9468705Z       ],
2026-06-21T01:36:44.9468905Z       "stages": {
2026-06-21T01:36:44.9469200Z         "doc": {
2026-06-21T01:36:44.9469430Z           "complete": false,
2026-06-21T01:36:44.9469682Z           "evidence": []
2026-06-21T01:36:44.9469902Z         },
2026-06-21T01:36:44.9470102Z         "impl": {
2026-06-21T01:36:44.9470322Z           "complete": true,
2026-06-21T01:36:44.9470561Z           "evidence": [
2026-06-21T01:36:44.9470787Z             {
2026-06-21T01:36:44.9471043Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9471338Z               "line": 27
2026-06-21T01:36:44.9471563Z             },
2026-06-21T01:36:44.9471781Z             {
2026-06-21T01:36:44.9472034Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9472330Z               "line": 75
2026-06-21T01:36:44.9472564Z             },
2026-06-21T01:36:44.9472764Z             {
2026-06-21T01:36:44.9473007Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9473457Z               "line": 98
2026-06-21T01:36:44.9473683Z             },
2026-06-21T01:36:44.9473872Z             {
2026-06-21T01:36:44.9474110Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9474397Z               "line": 82
2026-06-21T01:36:44.9474610Z             },
2026-06-21T01:36:44.9474807Z             {
2026-06-21T01:36:44.9475045Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9475326Z               "line": 109
2026-06-21T01:36:44.9475555Z             },
2026-06-21T01:36:44.9475765Z             {
2026-06-21T01:36:44.9476014Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9476402Z               "line": 127
2026-06-21T01:36:44.9476639Z             },
2026-06-21T01:36:44.9476853Z             {
2026-06-21T01:36:44.9477102Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9477392Z               "line": 142
2026-06-21T01:36:44.9477622Z             },
2026-06-21T01:36:44.9477840Z             {
2026-06-21T01:36:44.9478079Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9478359Z               "line": 7048
2026-06-21T01:36:44.9478595Z             }
2026-06-21T01:36:44.9478809Z           ]
2026-06-21T01:36:44.9479112Z         },
2026-06-21T01:36:44.9479323Z         "int": {
2026-06-21T01:36:44.9479575Z           "complete": false,
2026-06-21T01:36:44.9479823Z           "evidence": []
2026-06-21T01:36:44.9480070Z         },
2026-06-21T01:36:44.9480271Z         "unit": {
2026-06-21T01:36:44.9480501Z           "complete": true,
2026-06-21T01:36:44.9480743Z           "evidence": [
2026-06-21T01:36:44.9480967Z             {
2026-06-21T01:36:44.9481229Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9481523Z               "line": 334
2026-06-21T01:36:44.9481750Z             },
2026-06-21T01:36:44.9481951Z             {
2026-06-21T01:36:44.9482199Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9482495Z               "line": 380
2026-06-21T01:36:44.9482724Z             },
2026-06-21T01:36:44.9482928Z             {
2026-06-21T01:36:44.9483186Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9483477Z               "line": 391
2026-06-21T01:36:44.9483707Z             },
2026-06-21T01:36:44.9483915Z             {
2026-06-21T01:36:44.9484163Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9484451Z               "line": 165
2026-06-21T01:36:44.9484685Z             },
2026-06-21T01:36:44.9484894Z             {
2026-06-21T01:36:44.9485152Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9485438Z               "line": 184
2026-06-21T01:36:44.9485672Z             },
2026-06-21T01:36:44.9485881Z             {
2026-06-21T01:36:44.9486120Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T01:36:44.9486405Z               "line": 204
2026-06-21T01:36:44.9486631Z             },
2026-06-21T01:36:44.9486828Z             {
2026-06-21T01:36:44.9487070Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9487361Z               "line": 8334
2026-06-21T01:36:44.9487590Z             }
2026-06-21T01:36:44.9487794Z           ]
2026-06-21T01:36:44.9487981Z         }
2026-06-21T01:36:44.9488177Z       }
2026-06-21T01:36:44.9488366Z     },
2026-06-21T01:36:44.9488568Z     {
2026-06-21T01:36:44.9488783Z       "id": "REQ-CONSENT-2",
2026-06-21T01:36:44.9490097Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T01:36:44.9491127Z       "requiredStages": [
2026-06-21T01:36:44.9491366Z         "impl",
2026-06-21T01:36:44.9491570Z         "unit"
2026-06-21T01:36:44.9491775Z       ],
2026-06-21T01:36:44.9491979Z       "stages": {
2026-06-21T01:36:44.9492315Z         "doc": {
2026-06-21T01:36:44.9492553Z           "complete": false,
2026-06-21T01:36:44.9492802Z           "evidence": []
2026-06-21T01:36:44.9493026Z         },
2026-06-21T01:36:44.9493231Z         "impl": {
2026-06-21T01:36:44.9493450Z           "complete": true,
2026-06-21T01:36:44.9493688Z           "evidence": [
2026-06-21T01:36:44.9493909Z             {
2026-06-21T01:36:44.9494165Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9494466Z               "line": 140
2026-06-21T01:36:44.9494680Z             },
2026-06-21T01:36:44.9494880Z             {
2026-06-21T01:36:44.9495139Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9495536Z               "line": 165
2026-06-21T01:36:44.9495763Z             },
2026-06-21T01:36:44.9495970Z             {
2026-06-21T01:36:44.9496218Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9496509Z               "line": 199
2026-06-21T01:36:44.9496737Z             },
2026-06-21T01:36:44.9496951Z             {
2026-06-21T01:36:44.9497200Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9497489Z               "line": 241
2026-06-21T01:36:44.9497711Z             },
2026-06-21T01:36:44.9497912Z             {
2026-06-21T01:36:44.9498165Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9498451Z               "line": 269
2026-06-21T01:36:44.9498689Z             },
2026-06-21T01:36:44.9498894Z             {
2026-06-21T01:36:44.9499232Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9499528Z               "line": 300
2026-06-21T01:36:44.9499762Z             },
2026-06-21T01:36:44.9499977Z             {
2026-06-21T01:36:44.9500209Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9500485Z               "line": 6839
2026-06-21T01:36:44.9500724Z             },
2026-06-21T01:36:44.9500934Z             {
2026-06-21T01:36:44.9501166Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9501463Z               "line": 6897
2026-06-21T01:36:44.9501729Z             }
2026-06-21T01:36:44.9501931Z           ]
2026-06-21T01:36:44.9502130Z         },
2026-06-21T01:36:44.9502322Z         "int": {
2026-06-21T01:36:44.9502553Z           "complete": false,
2026-06-21T01:36:44.9502799Z           "evidence": []
2026-06-21T01:36:44.9503024Z         },
2026-06-21T01:36:44.9503224Z         "unit": {
2026-06-21T01:36:44.9503447Z           "complete": true,
2026-06-21T01:36:44.9503691Z           "evidence": [
2026-06-21T01:36:44.9503906Z             {
2026-06-21T01:36:44.9504154Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9504440Z               "line": 419
2026-06-21T01:36:44.9504678Z             },
2026-06-21T01:36:44.9504883Z             {
2026-06-21T01:36:44.9505142Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9505435Z               "line": 436
2026-06-21T01:36:44.9505661Z             },
2026-06-21T01:36:44.9505872Z             {
2026-06-21T01:36:44.9506134Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9506421Z               "line": 472
2026-06-21T01:36:44.9506643Z             },
2026-06-21T01:36:44.9506844Z             {
2026-06-21T01:36:44.9507083Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:44.9507370Z               "line": 516
2026-06-21T01:36:44.9507602Z             },
2026-06-21T01:36:44.9507812Z             {
2026-06-21T01:36:44.9508049Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9508343Z               "line": 9614
2026-06-21T01:36:44.9508576Z             },
2026-06-21T01:36:44.9508777Z             {
2026-06-21T01:36:44.9509101Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9509215Z               "line": 9696
2026-06-21T01:36:44.9509321Z             }
2026-06-21T01:36:44.9509420Z           ]
2026-06-21T01:36:44.9509520Z         }
2026-06-21T01:36:44.9509631Z       }
2026-06-21T01:36:44.9509730Z     },
2026-06-21T01:36:44.9509936Z     {
2026-06-21T01:36:44.9510050Z       "id": "REQ-CONSENT-3",
2026-06-21T01:36:44.9512037Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T01:36:44.9512266Z       "requiredStages": [
2026-06-21T01:36:44.9512375Z         "doc",
2026-06-21T01:36:44.9512477Z         "impl",
2026-06-21T01:36:44.9512581Z         "unit",
2026-06-21T01:36:44.9512676Z         "int"
2026-06-21T01:36:44.9512782Z       ],
2026-06-21T01:36:44.9512896Z       "stages": {
2026-06-21T01:36:44.9512999Z         "doc": {
2026-06-21T01:36:44.9513119Z           "complete": true,
2026-06-21T01:36:44.9513232Z           "evidence": [
2026-06-21T01:36:44.9513331Z             {
2026-06-21T01:36:44.9513455Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9513570Z               "line": 304
2026-06-21T01:36:44.9513669Z             }
2026-06-21T01:36:44.9513779Z           ]
2026-06-21T01:36:44.9513880Z         },
2026-06-21T01:36:44.9513984Z         "impl": {
2026-06-21T01:36:44.9514099Z           "complete": true,
2026-06-21T01:36:44.9514214Z           "evidence": [
2026-06-21T01:36:44.9514317Z             {
2026-06-21T01:36:44.9514476Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:44.9514598Z               "line": 123
2026-06-21T01:36:44.9514700Z             },
2026-06-21T01:36:44.9514809Z             {
2026-06-21T01:36:44.9514961Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:44.9515077Z               "line": 162
2026-06-21T01:36:44.9515195Z             },
2026-06-21T01:36:44.9515300Z             {
2026-06-21T01:36:44.9515458Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:44.9515567Z               "line": 291
2026-06-21T01:36:44.9515664Z             },
2026-06-21T01:36:44.9515759Z             {
2026-06-21T01:36:44.9515914Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9516029Z               "line": 574
2026-06-21T01:36:44.9516127Z             },
2026-06-21T01:36:44.9516236Z             {
2026-06-21T01:36:44.9516399Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9516512Z               "line": 824
2026-06-21T01:36:44.9516618Z             },
2026-06-21T01:36:44.9516718Z             {
2026-06-21T01:36:44.9516865Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9516967Z               "line": 6965
2026-06-21T01:36:44.9517076Z             }
2026-06-21T01:36:44.9517175Z           ]
2026-06-21T01:36:44.9517281Z         },
2026-06-21T01:36:44.9517380Z         "int": {
2026-06-21T01:36:44.9517495Z           "complete": true,
2026-06-21T01:36:44.9517601Z           "evidence": [
2026-06-21T01:36:44.9517704Z             {
2026-06-21T01:36:44.9517882Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T01:36:44.9517991Z               "line": 16
2026-06-21T01:36:44.9518086Z             }
2026-06-21T01:36:44.9518197Z           ]
2026-06-21T01:36:44.9518297Z         },
2026-06-21T01:36:44.9518410Z         "unit": {
2026-06-21T01:36:44.9518519Z           "complete": true,
2026-06-21T01:36:44.9518637Z           "evidence": [
2026-06-21T01:36:44.9518741Z             {
2026-06-21T01:36:44.9518908Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:44.9519084Z               "line": 1019
2026-06-21T01:36:44.9519184Z             },
2026-06-21T01:36:44.9519290Z             {
2026-06-21T01:36:44.9519456Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:44.9519666Z               "line": 1066
2026-06-21T01:36:44.9519770Z             },
2026-06-21T01:36:44.9519872Z             {
2026-06-21T01:36:44.9520033Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9520148Z               "line": 1394
2026-06-21T01:36:44.9520253Z             }
2026-06-21T01:36:44.9520348Z           ]
2026-06-21T01:36:44.9520448Z         }
2026-06-21T01:36:44.9520548Z       }
2026-06-21T01:36:44.9520653Z     },
2026-06-21T01:36:44.9520754Z     {
2026-06-21T01:36:44.9520887Z       "id": "REQ-CONV-1",
2026-06-21T01:36:44.9522398Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T01:36:44.9522630Z       "requiredStages": [
2026-06-21T01:36:44.9522736Z         "impl",
2026-06-21T01:36:44.9522845Z         "unit"
2026-06-21T01:36:44.9522950Z       ],
2026-06-21T01:36:44.9523051Z       "stages": {
2026-06-21T01:36:44.9523155Z         "doc": {
2026-06-21T01:36:44.9523284Z           "complete": false,
2026-06-21T01:36:44.9523395Z           "evidence": []
2026-06-21T01:36:44.9523494Z         },
2026-06-21T01:36:44.9523598Z         "impl": {
2026-06-21T01:36:44.9523712Z           "complete": true,
2026-06-21T01:36:44.9523825Z           "evidence": [
2026-06-21T01:36:44.9523929Z             {
2026-06-21T01:36:44.9524097Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9524215Z               "line": 938
2026-06-21T01:36:44.9524311Z             },
2026-06-21T01:36:44.9524415Z             {
2026-06-21T01:36:44.9524568Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:44.9524683Z               "line": 94
2026-06-21T01:36:44.9524788Z             },
2026-06-21T01:36:44.9524892Z             {
2026-06-21T01:36:44.9525045Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:44.9525159Z               "line": 345
2026-06-21T01:36:44.9525265Z             },
2026-06-21T01:36:44.9525355Z             {
2026-06-21T01:36:44.9525517Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:44.9525637Z               "line": 387
2026-06-21T01:36:44.9525726Z             },
2026-06-21T01:36:44.9525836Z             {
2026-06-21T01:36:44.9525985Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:44.9526104Z               "line": 472
2026-06-21T01:36:44.9526209Z             },
2026-06-21T01:36:44.9526314Z             {
2026-06-21T01:36:44.9526469Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9526574Z               "line": 667
2026-06-21T01:36:44.9526678Z             },
2026-06-21T01:36:44.9526772Z             {
2026-06-21T01:36:44.9526926Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9527039Z               "line": 693
2026-06-21T01:36:44.9527144Z             },
2026-06-21T01:36:44.9527250Z             {
2026-06-21T01:36:44.9527401Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:44.9527507Z               "line": 369
2026-06-21T01:36:44.9527612Z             },
2026-06-21T01:36:44.9527716Z             {
2026-06-21T01:36:44.9527870Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:36:44.9527984Z               "line": 19
2026-06-21T01:36:44.9528084Z             }
2026-06-21T01:36:44.9528190Z           ]
2026-06-21T01:36:44.9528298Z         },
2026-06-21T01:36:44.9528399Z         "int": {
2026-06-21T01:36:44.9528519Z           "complete": false,
2026-06-21T01:36:44.9528622Z           "evidence": []
2026-06-21T01:36:44.9528732Z         },
2026-06-21T01:36:44.9528848Z         "unit": {
2026-06-21T01:36:44.9529253Z           "complete": true,
2026-06-21T01:36:44.9529473Z           "evidence": [
2026-06-21T01:36:44.9529568Z             {
2026-06-21T01:36:44.9529725Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9529831Z               "line": 1263
2026-06-21T01:36:44.9529935Z             },
2026-06-21T01:36:44.9530030Z             {
2026-06-21T01:36:44.9530183Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:36:44.9530302Z               "line": 108
2026-06-21T01:36:44.9530403Z             },
2026-06-21T01:36:44.9530507Z             {
2026-06-21T01:36:44.9530655Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:36:44.9530861Z               "line": 134
2026-06-21T01:36:44.9530965Z             },
2026-06-21T01:36:44.9531067Z             {
2026-06-21T01:36:44.9531213Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T01:36:44.9531314Z               "line": 144
2026-06-21T01:36:44.9531419Z             }
2026-06-21T01:36:44.9531513Z           ]
2026-06-21T01:36:44.9531624Z         }
2026-06-21T01:36:44.9531724Z       }
2026-06-21T01:36:44.9531822Z     },
2026-06-21T01:36:44.9531927Z     {
2026-06-21T01:36:44.9532037Z       "id": "REQ-CONV-2",
2026-06-21T01:36:44.9533224Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T01:36:44.9533349Z       "requiredStages": [
2026-06-21T01:36:44.9533458Z         "impl",
2026-06-21T01:36:44.9533563Z         "unit"
2026-06-21T01:36:44.9533663Z       ],
2026-06-21T01:36:44.9533772Z       "stages": {
2026-06-21T01:36:44.9533878Z         "doc": {
2026-06-21T01:36:44.9534002Z           "complete": false,
2026-06-21T01:36:44.9534119Z           "evidence": []
2026-06-21T01:36:44.9534215Z         },
2026-06-21T01:36:44.9534319Z         "impl": {
2026-06-21T01:36:44.9534427Z           "complete": true,
2026-06-21T01:36:44.9534537Z           "evidence": [
2026-06-21T01:36:44.9534638Z             {
2026-06-21T01:36:44.9534794Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9534914Z               "line": 409
2026-06-21T01:36:44.9535014Z             },
2026-06-21T01:36:44.9535113Z             {
2026-06-21T01:36:44.9535267Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:44.9535381Z               "line": 119
2026-06-21T01:36:44.9535486Z             },
2026-06-21T01:36:44.9535591Z             {
2026-06-21T01:36:44.9535767Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:44.9535877Z               "line": 841
2026-06-21T01:36:44.9535987Z             },
2026-06-21T01:36:44.9536086Z             {
2026-06-21T01:36:44.9536249Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:44.9536363Z               "line": 852
2026-06-21T01:36:44.9536470Z             },
2026-06-21T01:36:44.9536573Z             {
2026-06-21T01:36:44.9536716Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:44.9536827Z               "line": 334
2026-06-21T01:36:44.9536930Z             },
2026-06-21T01:36:44.9537039Z             {
2026-06-21T01:36:44.9537168Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9537276Z               "line": 3074
2026-06-21T01:36:44.9537380Z             },
2026-06-21T01:36:44.9537471Z             {
2026-06-21T01:36:44.9537614Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9537728Z               "line": 3090
2026-06-21T01:36:44.9537834Z             },
2026-06-21T01:36:44.9537938Z             {
2026-06-21T01:36:44.9538068Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9538172Z               "line": 3170
2026-06-21T01:36:44.9538271Z             }
2026-06-21T01:36:44.9538377Z           ]
2026-06-21T01:36:44.9538563Z         },
2026-06-21T01:36:44.9538667Z         "int": {
2026-06-21T01:36:44.9538783Z           "complete": false,
2026-06-21T01:36:44.9538892Z           "evidence": []
2026-06-21T01:36:44.9539069Z         },
2026-06-21T01:36:44.9539172Z         "unit": {
2026-06-21T01:36:44.9539288Z           "complete": true,
2026-06-21T01:36:44.9539394Z           "evidence": [
2026-06-21T01:36:44.9539501Z             {
2026-06-21T01:36:44.9539663Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9539758Z               "line": 889
2026-06-21T01:36:44.9539866Z             },
2026-06-21T01:36:44.9539956Z             {
2026-06-21T01:36:44.9540106Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9540324Z               "line": 1014
2026-06-21T01:36:44.9540424Z             },
2026-06-21T01:36:44.9540528Z             {
2026-06-21T01:36:44.9540682Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:44.9540796Z               "line": 215
2026-06-21T01:36:44.9540900Z             }
2026-06-21T01:36:44.9541011Z           ]
2026-06-21T01:36:44.9541111Z         }
2026-06-21T01:36:44.9541210Z       }
2026-06-21T01:36:44.9541307Z     },
2026-06-21T01:36:44.9541411Z     {
2026-06-21T01:36:44.9541535Z       "id": "REQ-DAEMON-1",
2026-06-21T01:36:44.9541734Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T01:36:44.9541864Z       "requiredStages": [
2026-06-21T01:36:44.9541970Z         "impl",
2026-06-21T01:36:44.9542083Z         "unit",
2026-06-21T01:36:44.9542184Z         "int"
2026-06-21T01:36:44.9542285Z       ],
2026-06-21T01:36:44.9542392Z       "stages": {
2026-06-21T01:36:44.9542496Z         "doc": {
2026-06-21T01:36:44.9542607Z           "complete": false,
2026-06-21T01:36:44.9542721Z           "evidence": []
2026-06-21T01:36:44.9542826Z         },
2026-06-21T01:36:44.9542946Z         "impl": {
2026-06-21T01:36:44.9543050Z           "complete": true,
2026-06-21T01:36:44.9543165Z           "evidence": [
2026-06-21T01:36:44.9543265Z             {
2026-06-21T01:36:44.9543422Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9543533Z               "line": 229
2026-06-21T01:36:44.9543637Z             },
2026-06-21T01:36:44.9543741Z             {
2026-06-21T01:36:44.9543881Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:44.9543994Z               "line": 12
2026-06-21T01:36:44.9544094Z             },
2026-06-21T01:36:44.9544200Z             {
2026-06-21T01:36:44.9544347Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9544467Z               "line": 16
2026-06-21T01:36:44.9544572Z             },
2026-06-21T01:36:44.9544666Z             {
2026-06-21T01:36:44.9544823Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9544931Z               "line": 309
2026-06-21T01:36:44.9545039Z             },
2026-06-21T01:36:44.9545136Z             {
2026-06-21T01:36:44.9545288Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9545411Z               "line": 24
2026-06-21T01:36:44.9545508Z             },
2026-06-21T01:36:44.9545617Z             {
2026-06-21T01:36:44.9545766Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9545879Z               "line": 262
2026-06-21T01:36:44.9545983Z             },
2026-06-21T01:36:44.9546095Z             {
2026-06-21T01:36:44.9546251Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9546366Z               "line": 279
2026-06-21T01:36:44.9546471Z             },
2026-06-21T01:36:44.9546570Z             {
2026-06-21T01:36:44.9546724Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9546842Z               "line": 356
2026-06-21T01:36:44.9546942Z             },
2026-06-21T01:36:44.9547049Z             {
2026-06-21T01:36:44.9547199Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9547320Z               "line": 670
2026-06-21T01:36:44.9547416Z             },
2026-06-21T01:36:44.9547623Z             {
2026-06-21T01:36:44.9547770Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T01:36:44.9547882Z               "line": 15
2026-06-21T01:36:44.9547988Z             },
2026-06-21T01:36:44.9548093Z             {
2026-06-21T01:36:44.9548245Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:44.9548351Z               "line": 241
2026-06-21T01:36:44.9548461Z             },
2026-06-21T01:36:44.9548560Z             {
2026-06-21T01:36:44.9548690Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T01:36:44.9548799Z               "line": 13
2026-06-21T01:36:44.9549189Z             },
2026-06-21T01:36:44.9549480Z             {
2026-06-21T01:36:44.9604523Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9604654Z               "line": 382
2026-06-21T01:36:44.9604767Z             },
2026-06-21T01:36:44.9604881Z             {
2026-06-21T01:36:44.9605043Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9605210Z               "line": 494
2026-06-21T01:36:44.9605326Z             }
2026-06-21T01:36:44.9605429Z           ]
2026-06-21T01:36:44.9605540Z         },
2026-06-21T01:36:44.9605655Z         "int": {
2026-06-21T01:36:44.9605782Z           "complete": true,
2026-06-21T01:36:44.9605882Z           "evidence": [
2026-06-21T01:36:44.9605987Z             {
2026-06-21T01:36:44.9606206Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T01:36:44.9606321Z               "line": 2
2026-06-21T01:36:44.9606425Z             },
2026-06-21T01:36:44.9606535Z             {
2026-06-21T01:36:44.9606754Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T01:36:44.9606869Z               "line": 16
2026-06-21T01:36:44.9606979Z             },
2026-06-21T01:36:44.9607078Z             {
2026-06-21T01:36:44.9607251Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T01:36:44.9607360Z               "line": 12
2026-06-21T01:36:44.9607460Z             },
2026-06-21T01:36:44.9607566Z             {
2026-06-21T01:36:44.9607732Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T01:36:44.9607848Z               "line": 12
2026-06-21T01:36:44.9607955Z             },
2026-06-21T01:36:44.9608050Z             {
2026-06-21T01:36:44.9608226Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:36:44.9608315Z               "line": 44
2026-06-21T01:36:44.9608419Z             }
2026-06-21T01:36:44.9608520Z           ]
2026-06-21T01:36:44.9608615Z         },
2026-06-21T01:36:44.9608720Z         "unit": {
2026-06-21T01:36:44.9608835Z           "complete": true,
2026-06-21T01:36:44.9609039Z           "evidence": [
2026-06-21T01:36:44.9609136Z             {
2026-06-21T01:36:44.9609302Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:44.9609412Z               "line": 285
2026-06-21T01:36:44.9609522Z             },
2026-06-21T01:36:44.9609631Z             {
2026-06-21T01:36:44.9609779Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:44.9609888Z               "line": 293
2026-06-21T01:36:44.9609993Z             },
2026-06-21T01:36:44.9610094Z             {
2026-06-21T01:36:44.9610241Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:44.9610356Z               "line": 309
2026-06-21T01:36:44.9610452Z             },
2026-06-21T01:36:44.9610555Z             {
2026-06-21T01:36:44.9610710Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:44.9610814Z               "line": 317
2026-06-21T01:36:44.9610917Z             },
2026-06-21T01:36:44.9611022Z             {
2026-06-21T01:36:44.9611182Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9611282Z               "line": 659
2026-06-21T01:36:44.9611382Z             },
2026-06-21T01:36:44.9611488Z             {
2026-06-21T01:36:44.9611634Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9612017Z               "line": 729
2026-06-21T01:36:44.9612122Z             },
2026-06-21T01:36:44.9612216Z             {
2026-06-21T01:36:44.9612370Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9612484Z               "line": 1211
2026-06-21T01:36:44.9612589Z             },
2026-06-21T01:36:44.9612694Z             {
2026-06-21T01:36:44.9612846Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9612952Z               "line": 1248
2026-06-21T01:36:44.9613056Z             },
2026-06-21T01:36:44.9613151Z             {
2026-06-21T01:36:44.9613296Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9613526Z               "line": 1271
2026-06-21T01:36:44.9613622Z             },
2026-06-21T01:36:44.9613730Z             {
2026-06-21T01:36:44.9613877Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9613983Z               "line": 1300
2026-06-21T01:36:44.9614087Z             },
2026-06-21T01:36:44.9614192Z             {
2026-06-21T01:36:44.9614350Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9614459Z               "line": 1348
2026-06-21T01:36:44.9614555Z             },
2026-06-21T01:36:44.9614664Z             {
2026-06-21T01:36:44.9614812Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9614928Z               "line": 1391
2026-06-21T01:36:44.9615027Z             },
2026-06-21T01:36:44.9615127Z             {
2026-06-21T01:36:44.9615261Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T01:36:44.9615370Z               "line": 106
2026-06-21T01:36:44.9615480Z             },
2026-06-21T01:36:44.9615590Z             {
2026-06-21T01:36:44.9615737Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T01:36:44.9615843Z               "line": 132
2026-06-21T01:36:44.9615951Z             },
2026-06-21T01:36:44.9616047Z             {
2026-06-21T01:36:44.9616196Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:44.9616299Z               "line": 530
2026-06-21T01:36:44.9616417Z             }
2026-06-21T01:36:44.9616523Z           ]
2026-06-21T01:36:44.9616618Z         }
2026-06-21T01:36:44.9616718Z       }
2026-06-21T01:36:44.9616814Z     },
2026-06-21T01:36:44.9616910Z     {
2026-06-21T01:36:44.9617028Z       "id": "REQ-DAEMON-2",
2026-06-21T01:36:44.9617200Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T01:36:44.9617324Z       "requiredStages": [
2026-06-21T01:36:44.9617419Z         "impl",
2026-06-21T01:36:44.9617520Z         "unit",
2026-06-21T01:36:44.9617615Z         "int"
2026-06-21T01:36:44.9617710Z       ],
2026-06-21T01:36:44.9617820Z       "stages": {
2026-06-21T01:36:44.9617930Z         "doc": {
2026-06-21T01:36:44.9618040Z           "complete": true,
2026-06-21T01:36:44.9618149Z           "evidence": [
2026-06-21T01:36:44.9618253Z             {
2026-06-21T01:36:44.9618436Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T01:36:44.9618549Z               "line": 250
2026-06-21T01:36:44.9618658Z             }
2026-06-21T01:36:44.9618753Z           ]
2026-06-21T01:36:44.9618856Z         },
2026-06-21T01:36:44.9619028Z         "impl": {
2026-06-21T01:36:44.9619143Z           "complete": true,
2026-06-21T01:36:44.9619265Z           "evidence": [
2026-06-21T01:36:44.9619371Z             {
2026-06-21T01:36:44.9619514Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9619623Z               "line": 23
2026-06-21T01:36:44.9619729Z             },
2026-06-21T01:36:44.9619829Z             {
2026-06-21T01:36:44.9619977Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9620091Z               "line": 844
2026-06-21T01:36:44.9620205Z             },
2026-06-21T01:36:44.9620301Z             {
2026-06-21T01:36:44.9620444Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9620558Z               "line": 869
2026-06-21T01:36:44.9620659Z             },
2026-06-21T01:36:44.9620763Z             {
2026-06-21T01:36:44.9621012Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9621130Z               "line": 1105
2026-06-21T01:36:44.9621236Z             },
2026-06-21T01:36:44.9621337Z             {
2026-06-21T01:36:44.9621492Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9621592Z               "line": 32
2026-06-21T01:36:44.9621700Z             },
2026-06-21T01:36:44.9621799Z             {
2026-06-21T01:36:44.9621947Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9622053Z               "line": 1102
2026-06-21T01:36:44.9622156Z             },
2026-06-21T01:36:44.9622358Z             {
2026-06-21T01:36:44.9622505Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9622620Z               "line": 1813
2026-06-21T01:36:44.9622720Z             },
2026-06-21T01:36:44.9622815Z             {
2026-06-21T01:36:44.9622968Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9623086Z               "line": 2100
2026-06-21T01:36:44.9623188Z             },
2026-06-21T01:36:44.9623288Z             {
2026-06-21T01:36:44.9623435Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:36:44.9623545Z               "line": 11
2026-06-21T01:36:44.9623645Z             },
2026-06-21T01:36:44.9623749Z             {
2026-06-21T01:36:44.9623889Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9624001Z               "line": 153
2026-06-21T01:36:44.9624101Z             },
2026-06-21T01:36:44.9624206Z             {
2026-06-21T01:36:44.9624342Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9624457Z               "line": 343
2026-06-21T01:36:44.9624562Z             },
2026-06-21T01:36:44.9624652Z             {
2026-06-21T01:36:44.9624796Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9624905Z               "line": 13
2026-06-21T01:36:44.9625004Z             },
2026-06-21T01:36:44.9625111Z             {
2026-06-21T01:36:44.9625254Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9625362Z               "line": 27
2026-06-21T01:36:44.9625464Z             },
2026-06-21T01:36:44.9625553Z             {
2026-06-21T01:36:44.9625706Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9625807Z               "line": 147
2026-06-21T01:36:44.9625921Z             },
2026-06-21T01:36:44.9626016Z             {
2026-06-21T01:36:44.9626169Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9626282Z               "line": 632
2026-06-21T01:36:44.9626384Z             },
2026-06-21T01:36:44.9626493Z             {
2026-06-21T01:36:44.9626641Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9626756Z               "line": 853
2026-06-21T01:36:44.9626859Z             },
2026-06-21T01:36:44.9626963Z             {
2026-06-21T01:36:44.9627103Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9627221Z               "line": 1000
2026-06-21T01:36:44.9627321Z             },
2026-06-21T01:36:44.9627427Z             {
2026-06-21T01:36:44.9627574Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9627685Z               "line": 1089
2026-06-21T01:36:44.9627794Z             },
2026-06-21T01:36:44.9627888Z             {
2026-06-21T01:36:44.9628038Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9628156Z               "line": 1211
2026-06-21T01:36:44.9628251Z             },
2026-06-21T01:36:44.9628353Z             {
2026-06-21T01:36:44.9628508Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:36:44.9628629Z               "line": 10
2026-06-21T01:36:44.9628728Z             }
2026-06-21T01:36:44.9628828Z           ]
2026-06-21T01:36:44.9628929Z         },
2026-06-21T01:36:44.9629114Z         "int": {
2026-06-21T01:36:44.9629227Z           "complete": true,
2026-06-21T01:36:44.9629337Z           "evidence": [
2026-06-21T01:36:44.9629640Z             {
2026-06-21T01:36:44.9629788Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:44.9629898Z               "line": 17
2026-06-21T01:36:44.9630003Z             },
2026-06-21T01:36:44.9630098Z             {
2026-06-21T01:36:44.9630256Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:36:44.9630365Z               "line": 90
2026-06-21T01:36:44.9630465Z             },
2026-06-21T01:36:44.9630562Z             {
2026-06-21T01:36:44.9630722Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:36:44.9630842Z               "line": 110
2026-06-21T01:36:44.9630938Z             },
2026-06-21T01:36:44.9631127Z             {
2026-06-21T01:36:44.9631285Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:36:44.9631400Z               "line": 186
2026-06-21T01:36:44.9631496Z             },
2026-06-21T01:36:44.9631600Z             {
2026-06-21T01:36:44.9631757Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:36:44.9631864Z               "line": 309
2026-06-21T01:36:44.9631962Z             },
2026-06-21T01:36:44.9632061Z             {
2026-06-21T01:36:44.9632214Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T01:36:44.9632326Z               "line": 128
2026-06-21T01:36:44.9632436Z             },
2026-06-21T01:36:44.9632537Z             {
2026-06-21T01:36:44.9632688Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T01:36:44.9632799Z               "line": 59
2026-06-21T01:36:44.9632899Z             }
2026-06-21T01:36:44.9633003Z           ]
2026-06-21T01:36:44.9633094Z         },
2026-06-21T01:36:44.9633204Z         "unit": {
2026-06-21T01:36:44.9633327Z           "complete": true,
2026-06-21T01:36:44.9633438Z           "evidence": [
2026-06-21T01:36:44.9633537Z             {
2026-06-21T01:36:44.9633680Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:36:44.9633791Z               "line": 62
2026-06-21T01:36:44.9633895Z             },
2026-06-21T01:36:44.9633985Z             {
2026-06-21T01:36:44.9634134Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:36:44.9634242Z               "line": 76
2026-06-21T01:36:44.9634349Z             },
2026-06-21T01:36:44.9634449Z             {
2026-06-21T01:36:44.9634585Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T01:36:44.9634685Z               "line": 88
2026-06-21T01:36:44.9634790Z             },
2026-06-21T01:36:44.9634898Z             {
2026-06-21T01:36:44.9635050Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:44.9635166Z               "line": 347
2026-06-21T01:36:44.9635269Z             },
2026-06-21T01:36:44.9635375Z             {
2026-06-21T01:36:44.9635513Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9635622Z               "line": 873
2026-06-21T01:36:44.9635733Z             },
2026-06-21T01:36:44.9635823Z             {
2026-06-21T01:36:44.9635971Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9636076Z               "line": 881
2026-06-21T01:36:44.9636181Z             },
2026-06-21T01:36:44.9636285Z             {
2026-06-21T01:36:44.9636419Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9636528Z               "line": 898
2026-06-21T01:36:44.9636630Z             },
2026-06-21T01:36:44.9636734Z             {
2026-06-21T01:36:44.9636867Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9636978Z               "line": 974
2026-06-21T01:36:44.9637081Z             },
2026-06-21T01:36:44.9637181Z             {
2026-06-21T01:36:44.9637331Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9637447Z               "line": 1282
2026-06-21T01:36:44.9637547Z             },
2026-06-21T01:36:44.9637644Z             {
2026-06-21T01:36:44.9637795Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9637915Z               "line": 1294
2026-06-21T01:36:44.9638096Z             },
2026-06-21T01:36:44.9638196Z             {
2026-06-21T01:36:44.9638349Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:36:44.9638458Z               "line": 110
2026-06-21T01:36:44.9638554Z             },
2026-06-21T01:36:44.9638664Z             {
2026-06-21T01:36:44.9638811Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:36:44.9638918Z               "line": 145
2026-06-21T01:36:44.9639469Z             }
2026-06-21T01:36:44.9639566Z           ]
2026-06-21T01:36:44.9639674Z         }
2026-06-21T01:36:44.9639773Z       }
2026-06-21T01:36:44.9639874Z     },
2026-06-21T01:36:44.9639976Z     {
2026-06-21T01:36:44.9640215Z       "id": "REQ-DAEMON-3",
2026-06-21T01:36:44.9640414Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T01:36:44.9640530Z       "requiredStages": [
2026-06-21T01:36:44.9640639Z         "impl",
2026-06-21T01:36:44.9640738Z         "unit",
2026-06-21T01:36:44.9640845Z         "int"
2026-06-21T01:36:44.9640958Z       ],
2026-06-21T01:36:44.9641063Z       "stages": {
2026-06-21T01:36:44.9641169Z         "doc": {
2026-06-21T01:36:44.9641282Z           "complete": false,
2026-06-21T01:36:44.9641402Z           "evidence": []
2026-06-21T01:36:44.9641502Z         },
2026-06-21T01:36:44.9641611Z         "impl": {
2026-06-21T01:36:44.9641732Z           "complete": true,
2026-06-21T01:36:44.9641841Z           "evidence": [
2026-06-21T01:36:44.9641950Z             {
2026-06-21T01:36:44.9642100Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9642212Z               "line": 14
2026-06-21T01:36:44.9642313Z             },
2026-06-21T01:36:44.9642424Z             {
2026-06-21T01:36:44.9642579Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:36:44.9642684Z               "line": 11
2026-06-21T01:36:44.9642788Z             },
2026-06-21T01:36:44.9642891Z             {
2026-06-21T01:36:44.9643029Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:44.9643140Z               "line": 305
2026-06-21T01:36:44.9643239Z             },
2026-06-21T01:36:44.9643344Z             {
2026-06-21T01:36:44.9643478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9643587Z               "line": 1956
2026-06-21T01:36:44.9643693Z             },
2026-06-21T01:36:44.9643788Z             {
2026-06-21T01:36:44.9643916Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9644027Z               "line": 4235
2026-06-21T01:36:44.9644136Z             },
2026-06-21T01:36:44.9644231Z             {
2026-06-21T01:36:44.9644365Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9644474Z               "line": 4256
2026-06-21T01:36:44.9644584Z             }
2026-06-21T01:36:44.9644685Z           ]
2026-06-21T01:36:44.9644779Z         },
2026-06-21T01:36:44.9644889Z         "int": {
2026-06-21T01:36:44.9645004Z           "complete": true,
2026-06-21T01:36:44.9645118Z           "evidence": [
2026-06-21T01:36:44.9645212Z             {
2026-06-21T01:36:44.9645364Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:44.9645467Z               "line": 49
2026-06-21T01:36:44.9645572Z             },
2026-06-21T01:36:44.9645678Z             {
2026-06-21T01:36:44.9645824Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:44.9645926Z               "line": 487
2026-06-21T01:36:44.9646025Z             }
2026-06-21T01:36:44.9646125Z           ]
2026-06-21T01:36:44.9646226Z         },
2026-06-21T01:36:44.9646331Z         "unit": {
2026-06-21T01:36:44.9646458Z           "complete": true,
2026-06-21T01:36:44.9646565Z           "evidence": [
2026-06-21T01:36:44.9646674Z             {
2026-06-21T01:36:44.9646826Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9646937Z               "line": 1553
2026-06-21T01:36:44.9647041Z             },
2026-06-21T01:36:44.9647146Z             {
2026-06-21T01:36:44.9647280Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9647510Z               "line": 10715
2026-06-21T01:36:44.9647618Z             }
2026-06-21T01:36:44.9647718Z           ]
2026-06-21T01:36:44.9647815Z         }
2026-06-21T01:36:44.9647910Z       }
2026-06-21T01:36:44.9648008Z     },
2026-06-21T01:36:44.9648112Z     {
2026-06-21T01:36:44.9648228Z       "id": "REQ-DAEMON-4",
2026-06-21T01:36:44.9648384Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T01:36:44.9648499Z       "requiredStages": [
2026-06-21T01:36:44.9648595Z         "impl",
2026-06-21T01:36:44.9648699Z         "unit",
2026-06-21T01:36:44.9648795Z         "int"
2026-06-21T01:36:44.9648890Z       ],
2026-06-21T01:36:44.9649085Z       "stages": {
2026-06-21T01:36:44.9649337Z         "doc": {
2026-06-21T01:36:44.9649453Z           "complete": false,
2026-06-21T01:36:44.9649567Z           "evidence": []
2026-06-21T01:36:44.9649657Z         },
2026-06-21T01:36:44.9649763Z         "impl": {
2026-06-21T01:36:44.9649881Z           "complete": true,
2026-06-21T01:36:44.9649981Z           "evidence": [
2026-06-21T01:36:44.9650093Z             {
2026-06-21T01:36:44.9650248Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9650357Z               "line": 464
2026-06-21T01:36:44.9650453Z             },
2026-06-21T01:36:44.9650546Z             {
2026-06-21T01:36:44.9650704Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9650804Z               "line": 529
2026-06-21T01:36:44.9650913Z             },
2026-06-21T01:36:44.9651008Z             {
2026-06-21T01:36:44.9651152Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9651261Z               "line": 551
2026-06-21T01:36:44.9651377Z             }
2026-06-21T01:36:44.9651481Z           ]
2026-06-21T01:36:44.9651585Z         },
2026-06-21T01:36:44.9651691Z         "int": {
2026-06-21T01:36:44.9651805Z           "complete": true,
2026-06-21T01:36:44.9651909Z           "evidence": [
2026-06-21T01:36:44.9652011Z             {
2026-06-21T01:36:44.9652172Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T01:36:44.9652297Z               "line": 42
2026-06-21T01:36:44.9652392Z             }
2026-06-21T01:36:44.9652491Z           ]
2026-06-21T01:36:44.9652587Z         },
2026-06-21T01:36:44.9652693Z         "unit": {
2026-06-21T01:36:44.9652806Z           "complete": true,
2026-06-21T01:36:44.9652922Z           "evidence": [
2026-06-21T01:36:44.9653031Z             {
2026-06-21T01:36:44.9653172Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:44.9653282Z               "line": 428
2026-06-21T01:36:44.9653381Z             },
2026-06-21T01:36:44.9653484Z             {
2026-06-21T01:36:44.9653628Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9653742Z               "line": 957
2026-06-21T01:36:44.9653846Z             },
2026-06-21T01:36:44.9653948Z             {
2026-06-21T01:36:44.9654094Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9654195Z               "line": 1027
2026-06-21T01:36:44.9654305Z             },
2026-06-21T01:36:44.9654405Z             {
2026-06-21T01:36:44.9654553Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9654662Z               "line": 1057
2026-06-21T01:36:44.9654767Z             },
2026-06-21T01:36:44.9654863Z             {
2026-06-21T01:36:44.9655006Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9655111Z               "line": 1090
2026-06-21T01:36:44.9655222Z             }
2026-06-21T01:36:44.9655320Z           ]
2026-06-21T01:36:44.9655421Z         }
2026-06-21T01:36:44.9655517Z       }
2026-06-21T01:36:44.9655621Z     },
2026-06-21T01:36:44.9655724Z     {
2026-06-21T01:36:44.9655849Z       "id": "REQ-DAEMON-5",
2026-06-21T01:36:44.9657420Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T01:36:44.9657667Z       "requiredStages": [
2026-06-21T01:36:44.9657774Z         "impl",
2026-06-21T01:36:44.9657873Z         "unit"
2026-06-21T01:36:44.9657982Z       ],
2026-06-21T01:36:44.9658084Z       "stages": {
2026-06-21T01:36:44.9658178Z         "doc": {
2026-06-21T01:36:44.9658302Z           "complete": false,
2026-06-21T01:36:44.9658418Z           "evidence": []
2026-06-21T01:36:44.9658521Z         },
2026-06-21T01:36:44.9658615Z         "impl": {
2026-06-21T01:36:44.9658812Z           "complete": true,
2026-06-21T01:36:44.9658916Z           "evidence": [
2026-06-21T01:36:44.9659098Z             {
2026-06-21T01:36:44.9659278Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9659394Z               "line": 476
2026-06-21T01:36:44.9659499Z             },
2026-06-21T01:36:44.9659602Z             {
2026-06-21T01:36:44.9659756Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9659865Z               "line": 769
2026-06-21T01:36:44.9659965Z             },
2026-06-21T01:36:44.9660076Z             {
2026-06-21T01:36:44.9660222Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9660333Z               "line": 782
2026-06-21T01:36:44.9660423Z             },
2026-06-21T01:36:44.9660532Z             {
2026-06-21T01:36:44.9660672Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9660785Z               "line": 800
2026-06-21T01:36:44.9660889Z             },
2026-06-21T01:36:44.9660999Z             {
2026-06-21T01:36:44.9661149Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9661254Z               "line": 841
2026-06-21T01:36:44.9661359Z             }
2026-06-21T01:36:44.9661463Z           ]
2026-06-21T01:36:44.9661564Z         },
2026-06-21T01:36:44.9661669Z         "int": {
2026-06-21T01:36:44.9661792Z           "complete": false,
2026-06-21T01:36:44.9661903Z           "evidence": []
2026-06-21T01:36:44.9661998Z         },
2026-06-21T01:36:44.9662112Z         "unit": {
2026-06-21T01:36:44.9662232Z           "complete": true,
2026-06-21T01:36:44.9662341Z           "evidence": [
2026-06-21T01:36:44.9662445Z             {
2026-06-21T01:36:44.9662599Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9662723Z               "line": 1189
2026-06-21T01:36:44.9662823Z             },
2026-06-21T01:36:44.9662929Z             {
2026-06-21T01:36:44.9663080Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9663200Z               "line": 1213
2026-06-21T01:36:44.9663295Z             },
2026-06-21T01:36:44.9663399Z             {
2026-06-21T01:36:44.9663539Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:44.9663652Z               "line": 1239
2026-06-21T01:36:44.9663761Z             }
2026-06-21T01:36:44.9663871Z           ]
2026-06-21T01:36:44.9663969Z         }
2026-06-21T01:36:44.9664078Z       }
2026-06-21T01:36:44.9664178Z     },
2026-06-21T01:36:44.9664284Z     {
2026-06-21T01:36:44.9664402Z       "id": "REQ-DAEMON-6",
2026-06-21T01:36:44.9666531Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T01:36:44.9666673Z       "requiredStages": [
2026-06-21T01:36:44.9666784Z         "impl",
2026-06-21T01:36:44.9666993Z         "unit"
2026-06-21T01:36:44.9667098Z       ],
2026-06-21T01:36:44.9667203Z       "stages": {
2026-06-21T01:36:44.9667312Z         "doc": {
2026-06-21T01:36:44.9667422Z           "complete": false,
2026-06-21T01:36:44.9667541Z           "evidence": []
2026-06-21T01:36:44.9667637Z         },
2026-06-21T01:36:44.9667737Z         "impl": {
2026-06-21T01:36:44.9667861Z           "complete": true,
2026-06-21T01:36:44.9667971Z           "evidence": [
2026-06-21T01:36:44.9668075Z             {
2026-06-21T01:36:44.9668228Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9668339Z               "line": 495
2026-06-21T01:36:44.9668538Z             },
2026-06-21T01:36:44.9668649Z             {
2026-06-21T01:36:44.9668795Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9668911Z               "line": 526
2026-06-21T01:36:44.9669095Z             },
2026-06-21T01:36:44.9669204Z             {
2026-06-21T01:36:44.9669353Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9669514Z               "line": 55
2026-06-21T01:36:44.9669610Z             },
2026-06-21T01:36:44.9669715Z             {
2026-06-21T01:36:44.9669862Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9669973Z               "line": 70
2026-06-21T01:36:44.9670068Z             },
2026-06-21T01:36:44.9670177Z             {
2026-06-21T01:36:44.9670306Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9670425Z               "line": 2020
2026-06-21T01:36:44.9670530Z             },
2026-06-21T01:36:44.9670631Z             {
2026-06-21T01:36:44.9670773Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9670884Z               "line": 2046
2026-06-21T01:36:44.9670988Z             }
2026-06-21T01:36:44.9671088Z           ]
2026-06-21T01:36:44.9671179Z         },
2026-06-21T01:36:44.9671284Z         "int": {
2026-06-21T01:36:44.9671401Z           "complete": false,
2026-06-21T01:36:44.9671511Z           "evidence": []
2026-06-21T01:36:44.9671615Z         },
2026-06-21T01:36:44.9671718Z         "unit": {
2026-06-21T01:36:44.9671838Z           "complete": true,
2026-06-21T01:36:44.9671949Z           "evidence": [
2026-06-21T01:36:44.9672057Z             {
2026-06-21T01:36:44.9672201Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9672315Z               "line": 288
2026-06-21T01:36:44.9672414Z             },
2026-06-21T01:36:44.9672516Z             {
2026-06-21T01:36:44.9672667Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9672778Z               "line": 299
2026-06-21T01:36:44.9672873Z             },
2026-06-21T01:36:44.9672982Z             {
2026-06-21T01:36:44.9673135Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9673244Z               "line": 325
2026-06-21T01:36:44.9673354Z             },
2026-06-21T01:36:44.9673455Z             {
2026-06-21T01:36:44.9673602Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9673717Z               "line": 351
2026-06-21T01:36:44.9673813Z             }
2026-06-21T01:36:44.9673916Z           ]
2026-06-21T01:36:44.9674018Z         }
2026-06-21T01:36:44.9674128Z       }
2026-06-21T01:36:44.9674235Z     },
2026-06-21T01:36:44.9674335Z     {
2026-06-21T01:36:44.9674459Z       "id": "REQ-DAEMON-7",
2026-06-21T01:36:44.9675974Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T01:36:44.9676107Z       "requiredStages": [
2026-06-21T01:36:44.9676216Z         "impl",
2026-06-21T01:36:44.9676313Z         "unit"
2026-06-21T01:36:44.9676541Z       ],
2026-06-21T01:36:44.9676647Z       "stages": {
2026-06-21T01:36:44.9676755Z         "doc": {
2026-06-21T01:36:44.9676868Z           "complete": false,
2026-06-21T01:36:44.9676978Z           "evidence": []
2026-06-21T01:36:44.9677082Z         },
2026-06-21T01:36:44.9677190Z         "impl": {
2026-06-21T01:36:44.9677315Z           "complete": true,
2026-06-21T01:36:44.9677415Z           "evidence": [
2026-06-21T01:36:44.9677524Z             {
2026-06-21T01:36:44.9677673Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9677796Z               "line": 545
2026-06-21T01:36:44.9677906Z             },
2026-06-21T01:36:44.9678001Z             {
2026-06-21T01:36:44.9678269Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:44.9678383Z               "line": 610
2026-06-21T01:36:44.9678487Z             },
2026-06-21T01:36:44.9678584Z             {
2026-06-21T01:36:44.9678740Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9678856Z               "line": 89
2026-06-21T01:36:44.9679074Z             },
2026-06-21T01:36:44.9679180Z             {
2026-06-21T01:36:44.9679321Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9679451Z               "line": 1957
2026-06-21T01:36:44.9679553Z             }
2026-06-21T01:36:44.9679655Z           ]
2026-06-21T01:36:44.9679759Z         },
2026-06-21T01:36:44.9679860Z         "int": {
2026-06-21T01:36:44.9679984Z           "complete": false,
2026-06-21T01:36:44.9680088Z           "evidence": []
2026-06-21T01:36:44.9680185Z         },
2026-06-21T01:36:44.9680280Z         "unit": {
2026-06-21T01:36:44.9680398Z           "complete": true,
2026-06-21T01:36:44.9680514Z           "evidence": [
2026-06-21T01:36:44.9680599Z             {
2026-06-21T01:36:44.9680752Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9680861Z               "line": 314
2026-06-21T01:36:44.9680971Z             },
2026-06-21T01:36:44.9681071Z             {
2026-06-21T01:36:44.9681219Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9681329Z               "line": 8102
2026-06-21T01:36:44.9681425Z             }
2026-06-21T01:36:44.9681529Z           ]
2026-06-21T01:36:44.9681629Z         }
2026-06-21T01:36:44.9681734Z       }
2026-06-21T01:36:44.9681834Z     },
2026-06-21T01:36:44.9681933Z     {
2026-06-21T01:36:44.9682057Z       "id": "REQ-DAEMON-8",
2026-06-21T01:36:44.9683090Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T01:36:44.9683218Z       "requiredStages": [
2026-06-21T01:36:44.9683323Z         "impl",
2026-06-21T01:36:44.9683433Z         "unit"
2026-06-21T01:36:44.9683538Z       ],
2026-06-21T01:36:44.9683638Z       "stages": {
2026-06-21T01:36:44.9683739Z         "doc": {
2026-06-21T01:36:44.9683852Z           "complete": false,
2026-06-21T01:36:44.9683972Z           "evidence": []
2026-06-21T01:36:44.9684068Z         },
2026-06-21T01:36:44.9684177Z         "impl": {
2026-06-21T01:36:44.9684292Z           "complete": true,
2026-06-21T01:36:44.9684401Z           "evidence": [
2026-06-21T01:36:44.9684506Z             {
2026-06-21T01:36:44.9684655Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9684768Z               "line": 445
2026-06-21T01:36:44.9684862Z             },
2026-06-21T01:36:44.9684967Z             {
2026-06-21T01:36:44.9685122Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9685241Z               "line": 56
2026-06-21T01:36:44.9685347Z             }
2026-06-21T01:36:44.9685447Z           ]
2026-06-21T01:36:44.9685546Z         },
2026-06-21T01:36:44.9685643Z         "int": {
2026-06-21T01:36:44.9685771Z           "complete": false,
2026-06-21T01:36:44.9685890Z           "evidence": []
2026-06-21T01:36:44.9686095Z         },
2026-06-21T01:36:44.9686204Z         "unit": {
2026-06-21T01:36:44.9686320Z           "complete": true,
2026-06-21T01:36:44.9686429Z           "evidence": [
2026-06-21T01:36:44.9686524Z             {
2026-06-21T01:36:44.9686676Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9686786Z               "line": 288
2026-06-21T01:36:44.9686887Z             },
2026-06-21T01:36:44.9686996Z             {
2026-06-21T01:36:44.9687144Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T01:36:44.9687255Z               "line": 325
2026-06-21T01:36:44.9693515Z             }
2026-06-21T01:36:44.9693674Z           ]
2026-06-21T01:36:44.9693946Z         }
2026-06-21T01:36:44.9694098Z       }
2026-06-21T01:36:44.9694203Z     },
2026-06-21T01:36:44.9694303Z     {
2026-06-21T01:36:44.9694432Z       "id": "REQ-DAEMON-9",
2026-06-21T01:36:44.9697008Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T01:36:44.9697147Z       "requiredStages": [
2026-06-21T01:36:44.9697255Z         "impl",
2026-06-21T01:36:44.9697361Z         "unit"
2026-06-21T01:36:44.9697457Z       ],
2026-06-21T01:36:44.9697570Z       "stages": {
2026-06-21T01:36:44.9697670Z         "doc": {
2026-06-21T01:36:44.9697791Z           "complete": false,
2026-06-21T01:36:44.9697908Z           "evidence": []
2026-06-21T01:36:44.9698008Z         },
2026-06-21T01:36:44.9698118Z         "impl": {
2026-06-21T01:36:44.9698230Z           "complete": true,
2026-06-21T01:36:44.9698348Z           "evidence": [
2026-06-21T01:36:44.9698450Z             {
2026-06-21T01:36:44.9698616Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9698731Z               "line": 276
2026-06-21T01:36:44.9698826Z             },
2026-06-21T01:36:44.9698930Z             {
2026-06-21T01:36:44.9699170Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9699293Z               "line": 1153
2026-06-21T01:36:44.9699404Z             },
2026-06-21T01:36:44.9699508Z             {
2026-06-21T01:36:44.9699656Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9699770Z               "line": 197
2026-06-21T01:36:44.9699875Z             },
2026-06-21T01:36:44.9699971Z             {
2026-06-21T01:36:44.9700122Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9700228Z               "line": 344
2026-06-21T01:36:44.9700334Z             },
2026-06-21T01:36:44.9700447Z             {
2026-06-21T01:36:44.9700591Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9700697Z               "line": 381
2026-06-21T01:36:44.9700799Z             },
2026-06-21T01:36:44.9700894Z             {
2026-06-21T01:36:44.9701028Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9701142Z               "line": 2075
2026-06-21T01:36:44.9701237Z             }
2026-06-21T01:36:44.9701338Z           ]
2026-06-21T01:36:44.9701447Z         },
2026-06-21T01:36:44.9701552Z         "int": {
2026-06-21T01:36:44.9701676Z           "complete": false,
2026-06-21T01:36:44.9701781Z           "evidence": []
2026-06-21T01:36:44.9701886Z         },
2026-06-21T01:36:44.9701991Z         "unit": {
2026-06-21T01:36:44.9702110Z           "complete": true,
2026-06-21T01:36:44.9702221Z           "evidence": [
2026-06-21T01:36:44.9702434Z             {
2026-06-21T01:36:44.9702579Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9702691Z               "line": 1158
2026-06-21T01:36:44.9702792Z             },
2026-06-21T01:36:44.9702899Z             {
2026-06-21T01:36:44.9703030Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9703143Z               "line": 10580
2026-06-21T01:36:44.9703240Z             }
2026-06-21T01:36:44.9703342Z           ]
2026-06-21T01:36:44.9703446Z         }
2026-06-21T01:36:44.9703547Z       }
2026-06-21T01:36:44.9703652Z     },
2026-06-21T01:36:44.9703738Z     {
2026-06-21T01:36:44.9703852Z       "id": "REQ-DOCS-1",
2026-06-21T01:36:44.9704182Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T01:36:44.9704305Z       "requiredStages": [
2026-06-21T01:36:44.9704409Z         "doc",
2026-06-21T01:36:44.9704516Z         "impl"
2026-06-21T01:36:44.9704625Z       ],
2026-06-21T01:36:44.9704739Z       "stages": {
2026-06-21T01:36:44.9704845Z         "doc": {
2026-06-21T01:36:44.9704958Z           "complete": true,
2026-06-21T01:36:44.9705063Z           "evidence": [
2026-06-21T01:36:44.9705164Z             {
2026-06-21T01:36:44.9705311Z               "path": "docs-site/src/index.md",
2026-06-21T01:36:44.9705417Z               "line": 50
2026-06-21T01:36:44.9705517Z             }
2026-06-21T01:36:44.9705621Z           ]
2026-06-21T01:36:44.9705722Z         },
2026-06-21T01:36:44.9705827Z         "impl": {
2026-06-21T01:36:44.9705935Z           "complete": true,
2026-06-21T01:36:44.9706049Z           "evidence": [
2026-06-21T01:36:44.9706153Z             {
2026-06-21T01:36:44.9706323Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T01:36:44.9706443Z               "line": 12
2026-06-21T01:36:44.9706543Z             },
2026-06-21T01:36:44.9706647Z             {
2026-06-21T01:36:44.9706792Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:44.9706900Z               "line": 14
2026-06-21T01:36:44.9707001Z             }
2026-06-21T01:36:44.9707106Z           ]
2026-06-21T01:36:44.9707215Z         },
2026-06-21T01:36:44.9707316Z         "int": {
2026-06-21T01:36:44.9707440Z           "complete": false,
2026-06-21T01:36:44.9707549Z           "evidence": []
2026-06-21T01:36:44.9707649Z         },
2026-06-21T01:36:44.9707755Z         "unit": {
2026-06-21T01:36:44.9707868Z           "complete": false,
2026-06-21T01:36:44.9707984Z           "evidence": []
2026-06-21T01:36:44.9708084Z         }
2026-06-21T01:36:44.9708173Z       }
2026-06-21T01:36:44.9708274Z     },
2026-06-21T01:36:44.9708375Z     {
2026-06-21T01:36:44.9708483Z       "id": "REQ-DOCS-2",
2026-06-21T01:36:44.9708682Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T01:36:44.9708790Z       "requiredStages": [
2026-06-21T01:36:44.9708895Z         "doc",
2026-06-21T01:36:44.9709077Z         "int"
2026-06-21T01:36:44.9709176Z       ],
2026-06-21T01:36:44.9709277Z       "stages": {
2026-06-21T01:36:44.9709391Z         "doc": {
2026-06-21T01:36:44.9709509Z           "complete": true,
2026-06-21T01:36:44.9709640Z           "evidence": [
2026-06-21T01:36:44.9709744Z             {
2026-06-21T01:36:44.9709949Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T01:36:44.9710048Z               "line": 3
2026-06-21T01:36:44.9710158Z             },
2026-06-21T01:36:44.9710264Z             {
2026-06-21T01:36:44.9710417Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T01:36:44.9710521Z               "line": 3
2026-06-21T01:36:44.9710622Z             },
2026-06-21T01:36:44.9710726Z             {
2026-06-21T01:36:44.9710880Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T01:36:44.9710988Z               "line": 3
2026-06-21T01:36:44.9711084Z             }
2026-06-21T01:36:44.9711185Z           ]
2026-06-21T01:36:44.9711294Z         },
2026-06-21T01:36:44.9711388Z         "impl": {
2026-06-21T01:36:44.9711497Z           "complete": false,
2026-06-21T01:36:44.9711711Z           "evidence": []
2026-06-21T01:36:44.9711817Z         },
2026-06-21T01:36:44.9711927Z         "int": {
2026-06-21T01:36:44.9712036Z           "complete": true,
2026-06-21T01:36:44.9712147Z           "evidence": [
2026-06-21T01:36:44.9712246Z             {
2026-06-21T01:36:44.9712398Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:36:44.9712504Z               "line": 14
2026-06-21T01:36:44.9712608Z             }
2026-06-21T01:36:44.9712703Z           ]
2026-06-21T01:36:44.9712795Z         },
2026-06-21T01:36:44.9712904Z         "unit": {
2026-06-21T01:36:44.9713018Z           "complete": false,
2026-06-21T01:36:44.9713251Z           "evidence": []
2026-06-21T01:36:44.9713352Z         }
2026-06-21T01:36:44.9713459Z       }
2026-06-21T01:36:44.9713562Z     },
2026-06-21T01:36:44.9713661Z     {
2026-06-21T01:36:44.9713776Z       "id": "REQ-DOCS-3",
2026-06-21T01:36:44.9714035Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T01:36:44.9714165Z       "requiredStages": [
2026-06-21T01:36:44.9714264Z         "doc"
2026-06-21T01:36:44.9714360Z       ],
2026-06-21T01:36:44.9714470Z       "stages": {
2026-06-21T01:36:44.9714574Z         "doc": {
2026-06-21T01:36:44.9714694Z           "complete": true,
2026-06-21T01:36:44.9714794Z           "evidence": [
2026-06-21T01:36:44.9714898Z             {
2026-06-21T01:36:44.9715033Z               "path": "docs-site/src/index.md",
2026-06-21T01:36:44.9715152Z               "line": 42
2026-06-21T01:36:44.9715251Z             }
2026-06-21T01:36:44.9715352Z           ]
2026-06-21T01:36:44.9715461Z         },
2026-06-21T01:36:44.9715561Z         "impl": {
2026-06-21T01:36:44.9715691Z           "complete": false,
2026-06-21T01:36:44.9715800Z           "evidence": []
2026-06-21T01:36:44.9715895Z         },
2026-06-21T01:36:44.9716006Z         "int": {
2026-06-21T01:36:44.9716109Z           "complete": false,
2026-06-21T01:36:44.9716220Z           "evidence": []
2026-06-21T01:36:44.9716326Z         },
2026-06-21T01:36:44.9716434Z         "unit": {
2026-06-21T01:36:44.9716542Z           "complete": false,
2026-06-21T01:36:44.9716648Z           "evidence": []
2026-06-21T01:36:44.9716751Z         }
2026-06-21T01:36:44.9716841Z       }
2026-06-21T01:36:44.9716945Z     },
2026-06-21T01:36:44.9717047Z     {
2026-06-21T01:36:44.9717160Z       "id": "REQ-DOCS-4",
2026-06-21T01:36:44.9717394Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T01:36:44.9717512Z       "requiredStages": [
2026-06-21T01:36:44.9717619Z         "doc",
2026-06-21T01:36:44.9717728Z         "impl",
2026-06-21T01:36:44.9717837Z         "unit"
2026-06-21T01:36:44.9717939Z       ],
2026-06-21T01:36:44.9718047Z       "stages": {
2026-06-21T01:36:44.9718152Z         "doc": {
2026-06-21T01:36:44.9718267Z           "complete": true,
2026-06-21T01:36:44.9718376Z           "evidence": [
2026-06-21T01:36:44.9718471Z             {
2026-06-21T01:36:44.9718615Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T01:36:44.9718719Z               "line": 35
2026-06-21T01:36:44.9718820Z             }
2026-06-21T01:36:44.9718921Z           ]
2026-06-21T01:36:44.9719090Z         },
2026-06-21T01:36:44.9719195Z         "impl": {
2026-06-21T01:36:44.9719313Z           "complete": true,
2026-06-21T01:36:44.9719411Z           "evidence": [
2026-06-21T01:36:44.9719512Z             {
2026-06-21T01:36:44.9719675Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9719784Z               "line": 746
2026-06-21T01:36:44.9719885Z             },
2026-06-21T01:36:44.9719994Z             {
2026-06-21T01:36:44.9720122Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:44.9720242Z               "line": 15
2026-06-21T01:36:44.9720342Z             }
2026-06-21T01:36:44.9720442Z           ]
2026-06-21T01:36:44.9720538Z         },
2026-06-21T01:36:44.9720638Z         "int": {
2026-06-21T01:36:44.9720747Z           "complete": false,
2026-06-21T01:36:44.9720957Z           "evidence": []
2026-06-21T01:36:44.9721048Z         },
2026-06-21T01:36:44.9721153Z         "unit": {
2026-06-21T01:36:44.9721271Z           "complete": true,
2026-06-21T01:36:44.9721382Z           "evidence": [
2026-06-21T01:36:44.9721492Z             {
2026-06-21T01:36:44.9721649Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9721750Z               "line": 1682
2026-06-21T01:36:44.9721859Z             }
2026-06-21T01:36:44.9721962Z           ]
2026-06-21T01:36:44.9722062Z         }
2026-06-21T01:36:44.9722163Z       }
2026-06-21T01:36:44.9722267Z     },
2026-06-21T01:36:44.9722372Z     {
2026-06-21T01:36:44.9722482Z       "id": "REQ-DOCS-5",
2026-06-21T01:36:44.9722811Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T01:36:44.9722934Z       "requiredStages": [
2026-06-21T01:36:44.9723036Z         "impl",
2026-06-21T01:36:44.9723131Z         "int"
2026-06-21T01:36:44.9723235Z       ],
2026-06-21T01:36:44.9723346Z       "stages": {
2026-06-21T01:36:44.9723446Z         "doc": {
2026-06-21T01:36:44.9723564Z           "complete": false,
2026-06-21T01:36:44.9723675Z           "evidence": []
2026-06-21T01:36:44.9723779Z         },
2026-06-21T01:36:44.9723883Z         "impl": {
2026-06-21T01:36:44.9724004Z           "complete": true,
2026-06-21T01:36:44.9724122Z           "evidence": [
2026-06-21T01:36:44.9724222Z             {
2026-06-21T01:36:44.9724374Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9724486Z               "line": 747
2026-06-21T01:36:44.9724585Z             },
2026-06-21T01:36:44.9724687Z             {
2026-06-21T01:36:44.9724824Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:44.9724939Z               "line": 113
2026-06-21T01:36:44.9725040Z             }
2026-06-21T01:36:44.9725143Z           ]
2026-06-21T01:36:44.9725239Z         },
2026-06-21T01:36:44.9725345Z         "int": {
2026-06-21T01:36:44.9725454Z           "complete": true,
2026-06-21T01:36:44.9725569Z           "evidence": [
2026-06-21T01:36:44.9725678Z             {
2026-06-21T01:36:44.9725811Z               "path": ".github/workflows/ci.yml",
2026-06-21T01:36:44.9725922Z               "line": 126
2026-06-21T01:36:44.9726016Z             },
2026-06-21T01:36:44.9726121Z             {
2026-06-21T01:36:44.9726271Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:44.9726393Z               "line": 1719
2026-06-21T01:36:44.9726493Z             }
2026-06-21T01:36:44.9726581Z           ]
2026-06-21T01:36:44.9726683Z         },
2026-06-21T01:36:44.9726784Z         "unit": {
2026-06-21T01:36:44.9726910Z           "complete": false,
2026-06-21T01:36:44.9727017Z           "evidence": []
2026-06-21T01:36:44.9727121Z         }
2026-06-21T01:36:44.9727222Z       }
2026-06-21T01:36:44.9727316Z     },
2026-06-21T01:36:44.9727420Z     {
2026-06-21T01:36:44.9727525Z       "id": "REQ-DOCS-6",
2026-06-21T01:36:44.9727897Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T01:36:44.9728015Z       "requiredStages": [
2026-06-21T01:36:44.9728121Z         "impl",
2026-06-21T01:36:44.9728226Z         "unit",
2026-06-21T01:36:44.9728326Z         "int"
2026-06-21T01:36:44.9728431Z       ],
2026-06-21T01:36:44.9728536Z       "stages": {
2026-06-21T01:36:44.9728645Z         "doc": {
2026-06-21T01:36:44.9728760Z           "complete": true,
2026-06-21T01:36:44.9728870Z           "evidence": [
2026-06-21T01:36:44.9729055Z             {
2026-06-21T01:36:44.9729222Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T01:36:44.9729337Z               "line": 4
2026-06-21T01:36:44.9729433Z             }
2026-06-21T01:36:44.9729533Z           ]
2026-06-21T01:36:44.9729636Z         },
2026-06-21T01:36:44.9729741Z         "impl": {
2026-06-21T01:36:44.9729854Z           "complete": true,
2026-06-21T01:36:44.9729953Z           "evidence": [
2026-06-21T01:36:44.9730053Z             {
2026-06-21T01:36:44.9730277Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9730387Z               "line": 5240
2026-06-21T01:36:44.9730488Z             }
2026-06-21T01:36:44.9730587Z           ]
2026-06-21T01:36:44.9730688Z         },
2026-06-21T01:36:44.9730793Z         "int": {
2026-06-21T01:36:44.9730907Z           "complete": true,
2026-06-21T01:36:44.9731017Z           "evidence": [
2026-06-21T01:36:44.9731122Z             {
2026-06-21T01:36:44.9731273Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:36:44.9731389Z               "line": 39
2026-06-21T01:36:44.9731489Z             }
2026-06-21T01:36:44.9731588Z           ]
2026-06-21T01:36:44.9731794Z         },
2026-06-21T01:36:44.9731899Z         "unit": {
2026-06-21T01:36:44.9732019Z           "complete": true,
2026-06-21T01:36:44.9732127Z           "evidence": [
2026-06-21T01:36:44.9732223Z             {
2026-06-21T01:36:44.9732353Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9732456Z               "line": 10742
2026-06-21T01:36:44.9732565Z             }
2026-06-21T01:36:44.9732665Z           ]
2026-06-21T01:36:44.9732766Z         }
2026-06-21T01:36:44.9732865Z       }
2026-06-21T01:36:44.9732966Z     },
2026-06-21T01:36:44.9733071Z     {
2026-06-21T01:36:44.9733184Z       "id": "REQ-ELEVATE-1",
2026-06-21T01:36:44.9736572Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T01:36:44.9736715Z       "requiredStages": [
2026-06-21T01:36:44.9736821Z         "doc",
2026-06-21T01:36:44.9736929Z         "impl",
2026-06-21T01:36:44.9737034Z         "unit"
2026-06-21T01:36:44.9737136Z       ],
2026-06-21T01:36:44.9737244Z       "stages": {
2026-06-21T01:36:44.9737349Z         "doc": {
2026-06-21T01:36:44.9737475Z           "complete": true,
2026-06-21T01:36:44.9737587Z           "evidence": [
2026-06-21T01:36:44.9737695Z             {
2026-06-21T01:36:44.9737816Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9737923Z               "line": 687
2026-06-21T01:36:44.9738027Z             }
2026-06-21T01:36:44.9738133Z           ]
2026-06-21T01:36:44.9738242Z         },
2026-06-21T01:36:44.9738337Z         "impl": {
2026-06-21T01:36:44.9738457Z           "complete": true,
2026-06-21T01:36:44.9738562Z           "evidence": [
2026-06-21T01:36:44.9738657Z             {
2026-06-21T01:36:44.9738800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9738909Z               "line": 3572
2026-06-21T01:36:44.9739097Z             },
2026-06-21T01:36:44.9739201Z             {
2026-06-21T01:36:44.9739344Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9739449Z               "line": 3617
2026-06-21T01:36:44.9739548Z             },
2026-06-21T01:36:44.9739655Z             {
2026-06-21T01:36:44.9739796Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9739902Z               "line": 3679
2026-06-21T01:36:44.9740003Z             },
2026-06-21T01:36:44.9740097Z             {
2026-06-21T01:36:44.9740238Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:44.9740354Z               "line": 92
2026-06-21T01:36:44.9740560Z             },
2026-06-21T01:36:44.9740666Z             {
2026-06-21T01:36:44.9740809Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:44.9740909Z               "line": 148
2026-06-21T01:36:44.9741015Z             }
2026-06-21T01:36:44.9741114Z           ]
2026-06-21T01:36:44.9741219Z         },
2026-06-21T01:36:44.9741329Z         "int": {
2026-06-21T01:36:44.9741439Z           "complete": false,
2026-06-21T01:36:44.9741553Z           "evidence": []
2026-06-21T01:36:44.9741644Z         },
2026-06-21T01:36:44.9741753Z         "unit": {
2026-06-21T01:36:44.9741863Z           "complete": true,
2026-06-21T01:36:44.9742073Z           "evidence": [
2026-06-21T01:36:44.9742182Z             {
2026-06-21T01:36:44.9742325Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:44.9742444Z               "line": 442
2026-06-21T01:36:44.9742546Z             },
2026-06-21T01:36:44.9742645Z             {
2026-06-21T01:36:44.9742788Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:44.9742904Z               "line": 460
2026-06-21T01:36:44.9743007Z             }
2026-06-21T01:36:44.9743101Z           ]
2026-06-21T01:36:44.9743202Z         }
2026-06-21T01:36:44.9743288Z       }
2026-06-21T01:36:44.9743397Z     },
2026-06-21T01:36:44.9743497Z     {
2026-06-21T01:36:44.9743641Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T01:36:44.9745541Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T01:36:44.9745668Z       "requiredStages": [
2026-06-21T01:36:44.9745778Z         "doc",
2026-06-21T01:36:44.9745884Z         "impl",
2026-06-21T01:36:44.9745987Z         "unit"
2026-06-21T01:36:44.9746093Z       ],
2026-06-21T01:36:44.9746198Z       "stages": {
2026-06-21T01:36:44.9746297Z         "doc": {
2026-06-21T01:36:44.9746408Z           "complete": true,
2026-06-21T01:36:44.9746522Z           "evidence": [
2026-06-21T01:36:44.9746626Z             {
2026-06-21T01:36:44.9746747Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9746861Z               "line": 711
2026-06-21T01:36:44.9746965Z             }
2026-06-21T01:36:44.9747071Z           ]
2026-06-21T01:36:44.9747170Z         },
2026-06-21T01:36:44.9747280Z         "impl": {
2026-06-21T01:36:44.9747405Z           "complete": true,
2026-06-21T01:36:44.9747508Z           "evidence": [
2026-06-21T01:36:44.9747614Z             {
2026-06-21T01:36:44.9747748Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9747862Z               "line": 1721
2026-06-21T01:36:44.9747963Z             },
2026-06-21T01:36:44.9748063Z             {
2026-06-21T01:36:44.9748194Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9748309Z               "line": 3125
2026-06-21T01:36:44.9748408Z             },
2026-06-21T01:36:44.9748511Z             {
2026-06-21T01:36:44.9748640Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9748751Z               "line": 3134
2026-06-21T01:36:44.9748859Z             }
2026-06-21T01:36:44.9749027Z           ]
2026-06-21T01:36:44.9749131Z         },
2026-06-21T01:36:44.9749231Z         "int": {
2026-06-21T01:36:44.9749351Z           "complete": false,
2026-06-21T01:36:44.9749469Z           "evidence": []
2026-06-21T01:36:44.9749565Z         },
2026-06-21T01:36:44.9749680Z         "unit": {
2026-06-21T01:36:44.9749803Z           "complete": true,
2026-06-21T01:36:44.9749910Z           "evidence": [
2026-06-21T01:36:44.9750014Z             {
2026-06-21T01:36:44.9750253Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9750370Z               "line": 7950
2026-06-21T01:36:44.9750476Z             },
2026-06-21T01:36:44.9750582Z             {
2026-06-21T01:36:44.9750714Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9750818Z               "line": 7991
2026-06-21T01:36:44.9750914Z             }
2026-06-21T01:36:44.9751016Z           ]
2026-06-21T01:36:44.9751116Z         }
2026-06-21T01:36:44.9751212Z       }
2026-06-21T01:36:44.9751318Z     },
2026-06-21T01:36:44.9751417Z     {
2026-06-21T01:36:44.9751547Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T01:36:44.9756581Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T01:36:44.9756867Z       "requiredStages": [
2026-06-21T01:36:44.9756973Z         "doc",
2026-06-21T01:36:44.9757077Z         "impl",
2026-06-21T01:36:44.9757181Z         "unit",
2026-06-21T01:36:44.9757288Z         "int"
2026-06-21T01:36:44.9757378Z       ],
2026-06-21T01:36:44.9757487Z       "stages": {
2026-06-21T01:36:44.9757593Z         "doc": {
2026-06-21T01:36:44.9757716Z           "complete": true,
2026-06-21T01:36:44.9757821Z           "evidence": [
2026-06-21T01:36:44.9757932Z             {
2026-06-21T01:36:44.9758045Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9758154Z               "line": 163
2026-06-21T01:36:44.9758261Z             }
2026-06-21T01:36:44.9758360Z           ]
2026-06-21T01:36:44.9758464Z         },
2026-06-21T01:36:44.9758562Z         "impl": {
2026-06-21T01:36:44.9758684Z           "complete": true,
2026-06-21T01:36:44.9758797Z           "evidence": [
2026-06-21T01:36:44.9758897Z             {
2026-06-21T01:36:44.9759152Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:44.9759263Z               "line": 105
2026-06-21T01:36:44.9759368Z             },
2026-06-21T01:36:44.9759467Z             {
2026-06-21T01:36:44.9759602Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9759724Z               "line": 7219
2026-06-21T01:36:44.9759821Z             }
2026-06-21T01:36:44.9759926Z           ]
2026-06-21T01:36:44.9760021Z         },
2026-06-21T01:36:44.9760125Z         "int": {
2026-06-21T01:36:44.9760250Z           "complete": true,
2026-06-21T01:36:44.9760354Z           "evidence": [
2026-06-21T01:36:44.9760465Z             {
2026-06-21T01:36:44.9760593Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9760717Z               "line": 7384
2026-06-21T01:36:44.9760818Z             }
2026-06-21T01:36:44.9760926Z           ]
2026-06-21T01:36:44.9761128Z         },
2026-06-21T01:36:44.9761237Z         "unit": {
2026-06-21T01:36:44.9761355Z           "complete": true,
2026-06-21T01:36:44.9761459Z           "evidence": [
2026-06-21T01:36:44.9761558Z             {
2026-06-21T01:36:44.9761681Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9761796Z               "line": 7355
2026-06-21T01:36:44.9761901Z             }
2026-06-21T01:36:44.9761996Z           ]
2026-06-21T01:36:44.9762102Z         }
2026-06-21T01:36:44.9762202Z       }
2026-06-21T01:36:44.9762306Z     },
2026-06-21T01:36:44.9762407Z     {
2026-06-21T01:36:44.9762540Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T01:36:44.9764080Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T01:36:44.9764198Z       "requiredStages": [
2026-06-21T01:36:44.9764307Z         "impl",
2026-06-21T01:36:44.9764409Z         "unit"
2026-06-21T01:36:44.9764512Z       ],
2026-06-21T01:36:44.9764613Z       "stages": {
2026-06-21T01:36:44.9764723Z         "doc": {
2026-06-21T01:36:44.9764846Z           "complete": false,
2026-06-21T01:36:44.9764957Z           "evidence": []
2026-06-21T01:36:44.9765066Z         },
2026-06-21T01:36:44.9765170Z         "impl": {
2026-06-21T01:36:44.9765296Z           "complete": true,
2026-06-21T01:36:44.9765419Z           "evidence": [
2026-06-21T01:36:44.9765509Z             {
2026-06-21T01:36:44.9765648Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9765762Z               "line": 3165
2026-06-21T01:36:44.9765867Z             }
2026-06-21T01:36:44.9765968Z           ]
2026-06-21T01:36:44.9766072Z         },
2026-06-21T01:36:44.9766177Z         "int": {
2026-06-21T01:36:44.9766292Z           "complete": false,
2026-06-21T01:36:44.9766405Z           "evidence": []
2026-06-21T01:36:44.9766500Z         },
2026-06-21T01:36:44.9766609Z         "unit": {
2026-06-21T01:36:44.9766717Z           "complete": true,
2026-06-21T01:36:44.9766836Z           "evidence": [
2026-06-21T01:36:44.9766942Z             {
2026-06-21T01:36:44.9767075Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9767189Z               "line": 7331
2026-06-21T01:36:44.9767290Z             }
2026-06-21T01:36:44.9767394Z           ]
2026-06-21T01:36:44.9767494Z         }
2026-06-21T01:36:44.9767600Z       }
2026-06-21T01:36:44.9767699Z     },
2026-06-21T01:36:44.9767800Z     {
2026-06-21T01:36:44.9767919Z       "id": "REQ-EP-1",
2026-06-21T01:36:44.9768075Z       "title": "Day-one endpoint types; open type system",
2026-06-21T01:36:44.9768200Z       "requiredStages": [
2026-06-21T01:36:44.9768305Z         "impl",
2026-06-21T01:36:44.9768419Z         "unit"
2026-06-21T01:36:44.9768525Z       ],
2026-06-21T01:36:44.9768634Z       "stages": {
2026-06-21T01:36:44.9768739Z         "doc": {
2026-06-21T01:36:44.9768849Z           "complete": false,
2026-06-21T01:36:44.9769039Z           "evidence": []
2026-06-21T01:36:44.9769145Z         },
2026-06-21T01:36:44.9769253Z         "impl": {
2026-06-21T01:36:44.9769372Z           "complete": true,
2026-06-21T01:36:44.9769481Z           "evidence": [
2026-06-21T01:36:44.9769594Z             {
2026-06-21T01:36:44.9769742Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9769856Z               "line": 77
2026-06-21T01:36:44.9769961Z             },
2026-06-21T01:36:44.9770061Z             {
2026-06-21T01:36:44.9770214Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9770318Z               "line": 94
2026-06-21T01:36:44.9770429Z             }
2026-06-21T01:36:44.9770524Z           ]
2026-06-21T01:36:44.9770632Z         },
2026-06-21T01:36:44.9770734Z         "int": {
2026-06-21T01:36:44.9770962Z           "complete": false,
2026-06-21T01:36:44.9771087Z           "evidence": []
2026-06-21T01:36:44.9771190Z         },
2026-06-21T01:36:44.9771291Z         "unit": {
2026-06-21T01:36:44.9771392Z           "complete": true,
2026-06-21T01:36:44.9771510Z           "evidence": [
2026-06-21T01:36:44.9771601Z             {
2026-06-21T01:36:44.9771755Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9771862Z               "line": 161
2026-06-21T01:36:44.9771962Z             },
2026-06-21T01:36:44.9772072Z             {
2026-06-21T01:36:44.9772217Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9772429Z               "line": 178
2026-06-21T01:36:44.9772532Z             }
2026-06-21T01:36:44.9772642Z           ]
2026-06-21T01:36:44.9772747Z         }
2026-06-21T01:36:44.9772846Z       }
2026-06-21T01:36:44.9772948Z     },
2026-06-21T01:36:44.9773043Z     {
2026-06-21T01:36:44.9773152Z       "id": "REQ-EP-2",
2026-06-21T01:36:44.9773348Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T01:36:44.9773453Z       "requiredStages": [
2026-06-21T01:36:44.9773562Z         "impl",
2026-06-21T01:36:44.9773659Z         "unit"
2026-06-21T01:36:44.9773763Z       ],
2026-06-21T01:36:44.9773867Z       "stages": {
2026-06-21T01:36:44.9773969Z         "doc": {
2026-06-21T01:36:44.9774087Z           "complete": false,
2026-06-21T01:36:44.9774207Z           "evidence": []
2026-06-21T01:36:44.9774307Z         },
2026-06-21T01:36:44.9774411Z         "impl": {
2026-06-21T01:36:44.9774537Z           "complete": true,
2026-06-21T01:36:44.9774646Z           "evidence": [
2026-06-21T01:36:44.9774753Z             {
2026-06-21T01:36:44.9774901Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9775016Z               "line": 114
2026-06-21T01:36:44.9775125Z             },
2026-06-21T01:36:44.9775226Z             {
2026-06-21T01:36:44.9775382Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9775493Z               "line": 131
2026-06-21T01:36:44.9775597Z             },
2026-06-21T01:36:44.9775702Z             {
2026-06-21T01:36:44.9775865Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9775989Z               "line": 138
2026-06-21T01:36:44.9776093Z             }
2026-06-21T01:36:44.9776190Z           ]
2026-06-21T01:36:44.9776279Z         },
2026-06-21T01:36:44.9776394Z         "int": {
2026-06-21T01:36:44.9776514Z           "complete": false,
2026-06-21T01:36:44.9776627Z           "evidence": []
2026-06-21T01:36:44.9776732Z         },
2026-06-21T01:36:44.9776834Z         "unit": {
2026-06-21T01:36:44.9776961Z           "complete": true,
2026-06-21T01:36:44.9777064Z           "evidence": [
2026-06-21T01:36:44.9777170Z             {
2026-06-21T01:36:44.9777316Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9777434Z               "line": 190
2026-06-21T01:36:44.9777540Z             },
2026-06-21T01:36:44.9777644Z             {
2026-06-21T01:36:44.9777798Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9777902Z               "line": 208
2026-06-21T01:36:44.9778011Z             },
2026-06-21T01:36:44.9778112Z             {
2026-06-21T01:36:44.9778259Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T01:36:44.9778374Z               "line": 221
2026-06-21T01:36:44.9778479Z             }
2026-06-21T01:36:44.9778579Z           ]
2026-06-21T01:36:44.9778674Z         }
2026-06-21T01:36:44.9778775Z       }
2026-06-21T01:36:44.9778875Z     },
2026-06-21T01:36:44.9779057Z     {
2026-06-21T01:36:44.9779184Z       "id": "REQ-EP-3",
2026-06-21T01:36:44.9779405Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T01:36:44.9779527Z       "requiredStages": [
2026-06-21T01:36:44.9779619Z         "impl",
2026-06-21T01:36:44.9779724Z         "unit"
2026-06-21T01:36:44.9779823Z       ],
2026-06-21T01:36:44.9779927Z       "stages": {
2026-06-21T01:36:44.9780140Z         "doc": {
2026-06-21T01:36:44.9780258Z           "complete": false,
2026-06-21T01:36:44.9780374Z           "evidence": []
2026-06-21T01:36:44.9780469Z         },
2026-06-21T01:36:44.9780573Z         "impl": {
2026-06-21T01:36:44.9780693Z           "complete": true,
2026-06-21T01:36:44.9780807Z           "evidence": [
2026-06-21T01:36:44.9780912Z             {
2026-06-21T01:36:44.9781065Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9781183Z               "line": 31
2026-06-21T01:36:44.9781285Z             },
2026-06-21T01:36:44.9781394Z             {
2026-06-21T01:36:44.9781537Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9781751Z               "line": 49
2026-06-21T01:36:44.9781861Z             }
2026-06-21T01:36:44.9781962Z           ]
2026-06-21T01:36:44.9782070Z         },
2026-06-21T01:36:44.9782171Z         "int": {
2026-06-21T01:36:44.9782291Z           "complete": false,
2026-06-21T01:36:44.9782395Z           "evidence": []
2026-06-21T01:36:44.9782503Z         },
2026-06-21T01:36:44.9782608Z         "unit": {
2026-06-21T01:36:44.9782721Z           "complete": true,
2026-06-21T01:36:44.9785985Z           "evidence": [
2026-06-21T01:36:44.9786125Z             {
2026-06-21T01:36:44.9786295Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9786411Z               "line": 156
2026-06-21T01:36:44.9786529Z             },
2026-06-21T01:36:44.9786644Z             {
2026-06-21T01:36:44.9786797Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9786901Z               "line": 164
2026-06-21T01:36:44.9787007Z             },
2026-06-21T01:36:44.9787121Z             {
2026-06-21T01:36:44.9787273Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9787384Z               "line": 177
2026-06-21T01:36:44.9787492Z             },
2026-06-21T01:36:44.9787578Z             {
2026-06-21T01:36:44.9787725Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9787823Z               "line": 200
2026-06-21T01:36:44.9787927Z             },
2026-06-21T01:36:44.9788028Z             {
2026-06-21T01:36:44.9788176Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9788281Z               "line": 216
2026-06-21T01:36:44.9788377Z             },
2026-06-21T01:36:44.9788481Z             {
2026-06-21T01:36:44.9788629Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T01:36:44.9788744Z               "line": 233
2026-06-21T01:36:44.9788843Z             }
2026-06-21T01:36:44.9789039Z           ]
2026-06-21T01:36:44.9789139Z         }
2026-06-21T01:36:44.9789239Z       }
2026-06-21T01:36:44.9789349Z     },
2026-06-21T01:36:44.9789449Z     {
2026-06-21T01:36:44.9789564Z       "id": "REQ-EP-4",
2026-06-21T01:36:44.9789739Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T01:36:44.9789854Z       "requiredStages": [
2026-06-21T01:36:44.9789956Z         "impl",
2026-06-21T01:36:44.9790064Z         "unit"
2026-06-21T01:36:44.9790164Z       ],
2026-06-21T01:36:44.9790276Z       "stages": {
2026-06-21T01:36:44.9790373Z         "doc": {
2026-06-21T01:36:44.9790492Z           "complete": false,
2026-06-21T01:36:44.9790611Z           "evidence": []
2026-06-21T01:36:44.9790704Z         },
2026-06-21T01:36:44.9790813Z         "impl": {
2026-06-21T01:36:44.9790929Z           "complete": true,
2026-06-21T01:36:44.9791043Z           "evidence": [
2026-06-21T01:36:44.9791148Z             {
2026-06-21T01:36:44.9791296Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9791400Z               "line": 764
2026-06-21T01:36:44.9791506Z             },
2026-06-21T01:36:44.9791601Z             {
2026-06-21T01:36:44.9791753Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9791864Z               "line": 1127
2026-06-21T01:36:44.9791968Z             },
2026-06-21T01:36:44.9792063Z             {
2026-06-21T01:36:44.9792226Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9792508Z               "line": 2117
2026-06-21T01:36:44.9792607Z             },
2026-06-21T01:36:44.9792712Z             {
2026-06-21T01:36:44.9792856Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9792969Z               "line": 118
2026-06-21T01:36:44.9793063Z             },
2026-06-21T01:36:44.9793150Z             {
2026-06-21T01:36:44.9793291Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9793400Z               "line": 699
2026-06-21T01:36:44.9793506Z             },
2026-06-21T01:36:44.9793596Z             {
2026-06-21T01:36:44.9793738Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9793939Z               "line": 836
2026-06-21T01:36:44.9794044Z             },
2026-06-21T01:36:44.9794144Z             {
2026-06-21T01:36:44.9794301Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9794416Z               "line": 271
2026-06-21T01:36:44.9794516Z             },
2026-06-21T01:36:44.9794630Z             {
2026-06-21T01:36:44.9794779Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9794883Z               "line": 458
2026-06-21T01:36:44.9794988Z             },
2026-06-21T01:36:44.9795084Z             {
2026-06-21T01:36:44.9795236Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9795337Z               "line": 1246
2026-06-21T01:36:44.9795441Z             }
2026-06-21T01:36:44.9795551Z           ]
2026-06-21T01:36:44.9795652Z         },
2026-06-21T01:36:44.9795761Z         "int": {
2026-06-21T01:36:44.9795878Z           "complete": false,
2026-06-21T01:36:44.9795998Z           "evidence": []
2026-06-21T01:36:44.9796104Z         },
2026-06-21T01:36:44.9796212Z         "unit": {
2026-06-21T01:36:44.9796332Z           "complete": true,
2026-06-21T01:36:44.9796432Z           "evidence": [
2026-06-21T01:36:44.9796536Z             {
2026-06-21T01:36:44.9796676Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:44.9796795Z               "line": 927
2026-06-21T01:36:44.9796894Z             },
2026-06-21T01:36:44.9796995Z             {
2026-06-21T01:36:44.9797165Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T01:36:44.9797276Z               "line": 76
2026-06-21T01:36:44.9797381Z             },
2026-06-21T01:36:44.9797466Z             {
2026-06-21T01:36:44.9797629Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T01:36:44.9797733Z               "line": 147
2026-06-21T01:36:44.9797838Z             }
2026-06-21T01:36:44.9797944Z           ]
2026-06-21T01:36:44.9798043Z         }
2026-06-21T01:36:44.9798147Z       }
2026-06-21T01:36:44.9798247Z     },
2026-06-21T01:36:44.9798346Z     {
2026-06-21T01:36:44.9798445Z       "id": "REQ-EP-5",
2026-06-21T01:36:44.9799266Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T01:36:44.9799398Z       "requiredStages": [
2026-06-21T01:36:44.9799500Z         "impl",
2026-06-21T01:36:44.9799599Z         "unit",
2026-06-21T01:36:44.9799704Z         "int"
2026-06-21T01:36:44.9799809Z       ],
2026-06-21T01:36:44.9799910Z       "stages": {
2026-06-21T01:36:44.9800023Z         "doc": {
2026-06-21T01:36:44.9800148Z           "complete": false,
2026-06-21T01:36:44.9800262Z           "evidence": []
2026-06-21T01:36:44.9800366Z         },
2026-06-21T01:36:44.9800468Z         "impl": {
2026-06-21T01:36:44.9800591Z           "complete": true,
2026-06-21T01:36:44.9800691Z           "evidence": [
2026-06-21T01:36:44.9800792Z             {
2026-06-21T01:36:44.9800953Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:44.9801061Z               "line": 367
2026-06-21T01:36:44.9801162Z             },
2026-06-21T01:36:44.9801264Z             {
2026-06-21T01:36:44.9801427Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9801636Z               "line": 18
2026-06-21T01:36:44.9801732Z             },
2026-06-21T01:36:44.9801837Z             {
2026-06-21T01:36:44.9801984Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9802095Z               "line": 63
2026-06-21T01:36:44.9802185Z             },
2026-06-21T01:36:44.9802275Z             {
2026-06-21T01:36:44.9802429Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9802538Z               "line": 92
2026-06-21T01:36:44.9802647Z             },
2026-06-21T01:36:44.9802739Z             {
2026-06-21T01:36:44.9802890Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9803106Z               "line": 167
2026-06-21T01:36:44.9803210Z             },
2026-06-21T01:36:44.9803316Z             {
2026-06-21T01:36:44.9803468Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9803576Z               "line": 179
2026-06-21T01:36:44.9803681Z             },
2026-06-21T01:36:44.9803780Z             {
2026-06-21T01:36:44.9803931Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:44.9804046Z               "line": 114
2026-06-21T01:36:44.9804146Z             },
2026-06-21T01:36:44.9804250Z             {
2026-06-21T01:36:44.9804404Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9804508Z               "line": 22
2026-06-21T01:36:44.9804613Z             },
2026-06-21T01:36:44.9804714Z             {
2026-06-21T01:36:44.9804870Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9804986Z               "line": 145
2026-06-21T01:36:44.9805090Z             },
2026-06-21T01:36:44.9805185Z             {
2026-06-21T01:36:44.9805334Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9805453Z               "line": 174
2026-06-21T01:36:44.9805558Z             },
2026-06-21T01:36:44.9805663Z             {
2026-06-21T01:36:44.9805810Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9805931Z               "line": 196
2026-06-21T01:36:44.9806034Z             },
2026-06-21T01:36:44.9806135Z             {
2026-06-21T01:36:44.9806283Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9806391Z               "line": 221
2026-06-21T01:36:44.9806491Z             },
2026-06-21T01:36:44.9806596Z             {
2026-06-21T01:36:44.9806744Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9806858Z               "line": 247
2026-06-21T01:36:44.9806955Z             },
2026-06-21T01:36:44.9807058Z             {
2026-06-21T01:36:44.9807212Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9807321Z               "line": 270
2026-06-21T01:36:44.9807425Z             },
2026-06-21T01:36:44.9807527Z             {
2026-06-21T01:36:44.9807669Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9807783Z               "line": 104
2026-06-21T01:36:44.9807889Z             },
2026-06-21T01:36:44.9807993Z             {
2026-06-21T01:36:44.9808122Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9808232Z               "line": 6068
2026-06-21T01:36:44.9808331Z             },
2026-06-21T01:36:44.9808432Z             {
2026-06-21T01:36:44.9808561Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9808679Z               "line": 6202
2026-06-21T01:36:44.9808784Z             },
2026-06-21T01:36:44.9808883Z             {
2026-06-21T01:36:44.9809096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9809201Z               "line": 6368
2026-06-21T01:36:44.9809310Z             },
2026-06-21T01:36:44.9809415Z             {
2026-06-21T01:36:44.9809535Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9809658Z               "line": 6896
2026-06-21T01:36:44.9809759Z             }
2026-06-21T01:36:44.9809854Z           ]
2026-06-21T01:36:44.9809958Z         },
2026-06-21T01:36:44.9810178Z         "int": {
2026-06-21T01:36:44.9810287Z           "complete": true,
2026-06-21T01:36:44.9810398Z           "evidence": [
2026-06-21T01:36:44.9810503Z             {
2026-06-21T01:36:44.9810660Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T01:36:44.9810771Z               "line": 16
2026-06-21T01:36:44.9810869Z             },
2026-06-21T01:36:44.9810970Z             {
2026-06-21T01:36:44.9811109Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T01:36:44.9811213Z               "line": 15
2026-06-21T01:36:44.9811319Z             }
2026-06-21T01:36:44.9811420Z           ]
2026-06-21T01:36:44.9811522Z         },
2026-06-21T01:36:44.9811717Z         "unit": {
2026-06-21T01:36:44.9811834Z           "complete": true,
2026-06-21T01:36:44.9811943Z           "evidence": [
2026-06-21T01:36:44.9812040Z             {
2026-06-21T01:36:44.9812196Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9812302Z               "line": 246
2026-06-21T01:36:44.9812416Z             },
2026-06-21T01:36:44.9812516Z             {
2026-06-21T01:36:44.9812660Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9812770Z               "line": 306
2026-06-21T01:36:44.9812873Z             },
2026-06-21T01:36:44.9812975Z             {
2026-06-21T01:36:44.9813122Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T01:36:44.9813226Z               "line": 363
2026-06-21T01:36:44.9813323Z             },
2026-06-21T01:36:44.9813426Z             {
2026-06-21T01:36:44.9813576Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9813685Z               "line": 286
2026-06-21T01:36:44.9813799Z             },
2026-06-21T01:36:44.9813895Z             {
2026-06-21T01:36:44.9814051Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:44.9814155Z               "line": 338
2026-06-21T01:36:44.9814260Z             },
2026-06-21T01:36:44.9814363Z             {
2026-06-21T01:36:44.9814515Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:44.9814626Z               "line": 783
2026-06-21T01:36:44.9814730Z             },
2026-06-21T01:36:44.9814830Z             {
2026-06-21T01:36:44.9814960Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9815073Z               "line": 8751
2026-06-21T01:36:44.9815164Z             },
2026-06-21T01:36:44.9815274Z             {
2026-06-21T01:36:44.9815412Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9815518Z               "line": 8904
2026-06-21T01:36:44.9815622Z             },
2026-06-21T01:36:44.9815726Z             {
2026-06-21T01:36:44.9815857Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9815975Z               "line": 9493
2026-06-21T01:36:44.9816079Z             },
2026-06-21T01:36:44.9816181Z             {
2026-06-21T01:36:44.9816303Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9816408Z               "line": 9609
2026-06-21T01:36:44.9816510Z             }
2026-06-21T01:36:44.9816623Z           ]
2026-06-21T01:36:44.9816723Z         }
2026-06-21T01:36:44.9816825Z       }
2026-06-21T01:36:44.9816928Z     },
2026-06-21T01:36:44.9817027Z     {
2026-06-21T01:36:44.9817138Z       "id": "REQ-EP-6",
2026-06-21T01:36:44.9818722Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T01:36:44.9818863Z       "requiredStages": [
2026-06-21T01:36:44.9819055Z         "doc",
2026-06-21T01:36:44.9819163Z         "impl",
2026-06-21T01:36:44.9819267Z         "unit"
2026-06-21T01:36:44.9819368Z       ],
2026-06-21T01:36:44.9819575Z       "stages": {
2026-06-21T01:36:44.9819680Z         "doc": {
2026-06-21T01:36:44.9819796Z           "complete": true,
2026-06-21T01:36:44.9819908Z           "evidence": [
2026-06-21T01:36:44.9820009Z             {
2026-06-21T01:36:44.9820133Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9820242Z               "line": 227
2026-06-21T01:36:44.9820343Z             }
2026-06-21T01:36:44.9820438Z           ]
2026-06-21T01:36:44.9820537Z         },
2026-06-21T01:36:44.9820639Z         "impl": {
2026-06-21T01:36:44.9820748Z           "complete": true,
2026-06-21T01:36:44.9820857Z           "evidence": [
2026-06-21T01:36:44.9820959Z             {
2026-06-21T01:36:44.9821220Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9821326Z               "line": 212
2026-06-21T01:36:44.9821424Z             }
2026-06-21T01:36:44.9821530Z           ]
2026-06-21T01:36:44.9821627Z         },
2026-06-21T01:36:44.9821730Z         "int": {
2026-06-21T01:36:44.9821845Z           "complete": true,
2026-06-21T01:36:44.9821965Z           "evidence": [
2026-06-21T01:36:44.9822059Z             {
2026-06-21T01:36:44.9822211Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T01:36:44.9822315Z               "line": 18
2026-06-21T01:36:44.9822409Z             }
2026-06-21T01:36:44.9822513Z           ]
2026-06-21T01:36:44.9822615Z         },
2026-06-21T01:36:44.9822724Z         "unit": {
2026-06-21T01:36:44.9822832Z           "complete": true,
2026-06-21T01:36:44.9822934Z           "evidence": [
2026-06-21T01:36:44.9823034Z             {
2026-06-21T01:36:44.9823187Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:44.9823315Z               "line": 556
2026-06-21T01:36:44.9823405Z             },
2026-06-21T01:36:44.9823511Z             {
2026-06-21T01:36:44.9823653Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9823758Z               "line": 904
2026-06-21T01:36:44.9823859Z             }
2026-06-21T01:36:44.9823958Z           ]
2026-06-21T01:36:44.9824068Z         }
2026-06-21T01:36:44.9824169Z       }
2026-06-21T01:36:44.9824264Z     },
2026-06-21T01:36:44.9824368Z     {
2026-06-21T01:36:44.9824479Z       "id": "REQ-EP-7",
2026-06-21T01:36:44.9826253Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T01:36:44.9826383Z       "requiredStages": [
2026-06-21T01:36:44.9826487Z         "doc",
2026-06-21T01:36:44.9826596Z         "impl",
2026-06-21T01:36:44.9826693Z         "unit"
2026-06-21T01:36:44.9826797Z       ],
2026-06-21T01:36:44.9826907Z       "stages": {
2026-06-21T01:36:44.9827017Z         "doc": {
2026-06-21T01:36:44.9827121Z           "complete": true,
2026-06-21T01:36:44.9827231Z           "evidence": [
2026-06-21T01:36:44.9827332Z             {
2026-06-21T01:36:44.9827450Z               "path": "CONTEXT.md",
2026-06-21T01:36:44.9827568Z               "line": 490
2026-06-21T01:36:44.9827668Z             }
2026-06-21T01:36:44.9827775Z           ]
2026-06-21T01:36:44.9827873Z         },
2026-06-21T01:36:44.9827983Z         "impl": {
2026-06-21T01:36:44.9828108Z           "complete": true,
2026-06-21T01:36:44.9828217Z           "evidence": [
2026-06-21T01:36:44.9828318Z             {
2026-06-21T01:36:44.9828470Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:44.9828589Z               "line": 505
2026-06-21T01:36:44.9828689Z             },
2026-06-21T01:36:44.9828794Z             {
2026-06-21T01:36:44.9829023Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:44.9829128Z               "line": 87
2026-06-21T01:36:44.9829352Z             },
2026-06-21T01:36:44.9829456Z             {
2026-06-21T01:36:44.9829616Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:44.9829738Z               "line": 81
2026-06-21T01:36:44.9829870Z             },
2026-06-21T01:36:44.9829975Z             {
2026-06-21T01:36:44.9830125Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:44.9830231Z               "line": 166
2026-06-21T01:36:44.9830336Z             },
2026-06-21T01:36:44.9830435Z             {
2026-06-21T01:36:44.9830574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9830679Z               "line": 1645
2026-06-21T01:36:44.9830880Z             }
2026-06-21T01:36:44.9830980Z           ]
2026-06-21T01:36:44.9831074Z         },
2026-06-21T01:36:44.9831175Z         "int": {
2026-06-21T01:36:44.9831290Z           "complete": false,
2026-06-21T01:36:44.9831399Z           "evidence": []
2026-06-21T01:36:44.9831499Z         },
2026-06-21T01:36:44.9831609Z         "unit": {
2026-06-21T01:36:44.9831718Z           "complete": true,
2026-06-21T01:36:44.9831824Z           "evidence": [
2026-06-21T01:36:44.9831924Z             {
2026-06-21T01:36:44.9832070Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:44.9832191Z               "line": 623
2026-06-21T01:36:44.9832290Z             },
2026-06-21T01:36:44.9832381Z             {
2026-06-21T01:36:44.9832511Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:44.9832624Z               "line": 212
2026-06-21T01:36:44.9832728Z             },
2026-06-21T01:36:44.9832833Z             {
2026-06-21T01:36:44.9832974Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:44.9833093Z               "line": 307
2026-06-21T01:36:44.9833198Z             },
2026-06-21T01:36:44.9833298Z             {
2026-06-21T01:36:44.9833437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9833541Z               "line": 7724
2026-06-21T01:36:44.9833655Z             },
2026-06-21T01:36:44.9833761Z             {
2026-06-21T01:36:44.9833890Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9834003Z               "line": 7751
2026-06-21T01:36:44.9834104Z             }
2026-06-21T01:36:44.9834213Z           ]
2026-06-21T01:36:44.9834313Z         }
2026-06-21T01:36:44.9834419Z       }
2026-06-21T01:36:44.9834523Z     },
2026-06-21T01:36:44.9834623Z     {
2026-06-21T01:36:44.9834748Z       "id": "REQ-FRONT-1",
2026-06-21T01:36:44.9834962Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T01:36:44.9835087Z       "requiredStages": [],
2026-06-21T01:36:44.9835204Z       "stages": {
2026-06-21T01:36:44.9835313Z         "doc": {
2026-06-21T01:36:44.9835438Z           "complete": false,
2026-06-21T01:36:44.9835540Z           "evidence": []
2026-06-21T01:36:44.9835650Z         },
2026-06-21T01:36:44.9835755Z         "impl": {
2026-06-21T01:36:44.9835883Z           "complete": false,
2026-06-21T01:36:44.9835989Z           "evidence": []
2026-06-21T01:36:44.9836094Z         },
2026-06-21T01:36:44.9836198Z         "int": {
2026-06-21T01:36:44.9836313Z           "complete": false,
2026-06-21T01:36:44.9836432Z           "evidence": []
2026-06-21T01:36:44.9836532Z         },
2026-06-21T01:36:44.9836643Z         "unit": {
2026-06-21T01:36:44.9836756Z           "complete": false,
2026-06-21T01:36:44.9836871Z           "evidence": []
2026-06-21T01:36:44.9836977Z         }
2026-06-21T01:36:44.9837075Z       }
2026-06-21T01:36:44.9837180Z     },
2026-06-21T01:36:44.9837277Z     {
2026-06-21T01:36:44.9837404Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T01:36:44.9843203Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T01:36:44.9843557Z       "requiredStages": [
2026-06-21T01:36:44.9843667Z         "int"
2026-06-21T01:36:44.9843768Z       ],
2026-06-21T01:36:44.9843872Z       "stages": {
2026-06-21T01:36:44.9843972Z         "doc": {
2026-06-21T01:36:44.9844097Z           "complete": false,
2026-06-21T01:36:44.9844224Z           "evidence": []
2026-06-21T01:36:44.9844326Z         },
2026-06-21T01:36:44.9844430Z         "impl": {
2026-06-21T01:36:44.9844539Z           "complete": false,
2026-06-21T01:36:44.9844646Z           "evidence": []
2026-06-21T01:36:44.9844745Z         },
2026-06-21T01:36:44.9844845Z         "int": {
2026-06-21T01:36:44.9844965Z           "complete": true,
2026-06-21T01:36:44.9845079Z           "evidence": [
2026-06-21T01:36:44.9845188Z             {
2026-06-21T01:36:44.9845342Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T01:36:44.9845450Z               "line": 300
2026-06-21T01:36:44.9845551Z             }
2026-06-21T01:36:44.9845652Z           ]
2026-06-21T01:36:44.9845760Z         },
2026-06-21T01:36:44.9845864Z         "unit": {
2026-06-21T01:36:44.9845984Z           "complete": false,
2026-06-21T01:36:44.9846091Z           "evidence": []
2026-06-21T01:36:44.9846195Z         }
2026-06-21T01:36:44.9846292Z       }
2026-06-21T01:36:44.9846397Z     },
2026-06-21T01:36:44.9846510Z     {
2026-06-21T01:36:44.9846640Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T01:36:44.9849443Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T01:36:44.9849572Z       "requiredStages": [
2026-06-21T01:36:44.9849675Z         "impl",
2026-06-21T01:36:44.9849791Z         "unit",
2026-06-21T01:36:44.9849895Z         "int"
2026-06-21T01:36:44.9850005Z       ],
2026-06-21T01:36:44.9850111Z       "stages": {
2026-06-21T01:36:44.9850210Z         "doc": {
2026-06-21T01:36:44.9850449Z           "complete": false,
2026-06-21T01:36:44.9850553Z           "evidence": []
2026-06-21T01:36:44.9850658Z         },
2026-06-21T01:36:44.9850760Z         "impl": {
2026-06-21T01:36:44.9850877Z           "complete": true,
2026-06-21T01:36:44.9850990Z           "evidence": [
2026-06-21T01:36:44.9851091Z             {
2026-06-21T01:36:44.9851237Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9851346Z               "line": 257
2026-06-21T01:36:44.9851447Z             }
2026-06-21T01:36:44.9851551Z           ]
2026-06-21T01:36:44.9851651Z         },
2026-06-21T01:36:44.9851762Z         "int": {
2026-06-21T01:36:44.9851865Z           "complete": true,
2026-06-21T01:36:44.9852090Z           "evidence": [
2026-06-21T01:36:44.9852175Z             {
2026-06-21T01:36:44.9852344Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T01:36:44.9852443Z               "line": 93
2026-06-21T01:36:44.9852543Z             }
2026-06-21T01:36:44.9852649Z           ]
2026-06-21T01:36:44.9852757Z         },
2026-06-21T01:36:44.9852862Z         "unit": {
2026-06-21T01:36:44.9852978Z           "complete": true,
2026-06-21T01:36:44.9853082Z           "evidence": [
2026-06-21T01:36:44.9853182Z             {
2026-06-21T01:36:44.9853326Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9853434Z               "line": 802
2026-06-21T01:36:44.9853525Z             },
2026-06-21T01:36:44.9853631Z             {
2026-06-21T01:36:44.9853772Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9853886Z               "line": 824
2026-06-21T01:36:44.9853981Z             },
2026-06-21T01:36:44.9854080Z             {
2026-06-21T01:36:44.9854227Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:44.9854342Z               "line": 855
2026-06-21T01:36:44.9854456Z             }
2026-06-21T01:36:44.9854557Z           ]
2026-06-21T01:36:44.9854662Z         }
2026-06-21T01:36:44.9854761Z       }
2026-06-21T01:36:44.9854867Z     },
2026-06-21T01:36:44.9854962Z     {
2026-06-21T01:36:44.9855109Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T01:36:44.9857754Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T01:36:44.9857890Z       "requiredStages": [
2026-06-21T01:36:44.9858000Z         "doc",
2026-06-21T01:36:44.9858116Z         "impl",
2026-06-21T01:36:44.9858220Z         "unit",
2026-06-21T01:36:44.9858325Z         "int"
2026-06-21T01:36:44.9858440Z       ],
2026-06-21T01:36:44.9858539Z       "stages": {
2026-06-21T01:36:44.9858644Z         "doc": {
2026-06-21T01:36:44.9858755Z           "complete": true,
2026-06-21T01:36:44.9858872Z           "evidence": [
2026-06-21T01:36:44.9859055Z             {
2026-06-21T01:36:44.9859187Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:44.9859301Z               "line": 333
2026-06-21T01:36:44.9859402Z             }
2026-06-21T01:36:44.9859512Z           ]
2026-06-21T01:36:44.9859616Z         },
2026-06-21T01:36:44.9859732Z         "impl": {
2026-06-21T01:36:44.9859859Z           "complete": true,
2026-06-21T01:36:44.9859954Z           "evidence": [
2026-06-21T01:36:44.9860060Z             {
2026-06-21T01:36:44.9860211Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9860427Z               "line": 494
2026-06-21T01:36:44.9860526Z             },
2026-06-21T01:36:44.9860632Z             {
2026-06-21T01:36:44.9860789Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9860899Z               "line": 499
2026-06-21T01:36:44.9861005Z             },
2026-06-21T01:36:44.9861098Z             {
2026-06-21T01:36:44.9861252Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9861362Z               "line": 874
2026-06-21T01:36:44.9861475Z             },
2026-06-21T01:36:44.9861580Z             {
2026-06-21T01:36:44.9861721Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9861949Z               "line": 915
2026-06-21T01:36:44.9862054Z             },
2026-06-21T01:36:44.9862159Z             {
2026-06-21T01:36:44.9862317Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9862421Z               "line": 926
2026-06-21T01:36:44.9862531Z             },
2026-06-21T01:36:44.9862636Z             {
2026-06-21T01:36:44.9862788Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:44.9862899Z               "line": 358
2026-06-21T01:36:44.9862998Z             }
2026-06-21T01:36:44.9863107Z           ]
2026-06-21T01:36:44.9863204Z         },
2026-06-21T01:36:44.9863308Z         "int": {
2026-06-21T01:36:44.9863413Z           "complete": true,
2026-06-21T01:36:44.9863519Z           "evidence": [
2026-06-21T01:36:44.9863608Z             {
2026-06-21T01:36:44.9863775Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T01:36:44.9863891Z               "line": 30
2026-06-21T01:36:44.9863994Z             }
2026-06-21T01:36:44.9864095Z           ]
2026-06-21T01:36:44.9864201Z         },
2026-06-21T01:36:44.9864304Z         "unit": {
2026-06-21T01:36:44.9864422Z           "complete": true,
2026-06-21T01:36:44.9864532Z           "evidence": [
2026-06-21T01:36:44.9864635Z             {
2026-06-21T01:36:44.9864778Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9864893Z               "line": 1493
2026-06-21T01:36:44.9864992Z             },
2026-06-21T01:36:44.9865093Z             {
2026-06-21T01:36:44.9865241Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9865359Z               "line": 1518
2026-06-21T01:36:44.9865466Z             },
2026-06-21T01:36:44.9865561Z             {
2026-06-21T01:36:44.9865708Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9865818Z               "line": 1535
2026-06-21T01:36:44.9865923Z             },
2026-06-21T01:36:44.9866032Z             {
2026-06-21T01:36:44.9866194Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9866313Z               "line": 1578
2026-06-21T01:36:44.9866415Z             }
2026-06-21T01:36:44.9866518Z           ]
2026-06-21T01:36:44.9866619Z         }
2026-06-21T01:36:44.9866720Z       }
2026-06-21T01:36:44.9866819Z     },
2026-06-21T01:36:44.9866913Z     {
2026-06-21T01:36:44.9867085Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T01:36:44.9869890Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T01:36:44.9870142Z       "requiredStages": [],
2026-06-21T01:36:44.9870257Z       "stages": {
2026-06-21T01:36:44.9870358Z         "doc": {
2026-06-21T01:36:44.9870476Z           "complete": false,
2026-06-21T01:36:44.9870587Z           "evidence": []
2026-06-21T01:36:44.9870697Z         },
2026-06-21T01:36:44.9870800Z         "impl": {
2026-06-21T01:36:44.9870916Z           "complete": false,
2026-06-21T01:36:44.9871030Z           "evidence": []
2026-06-21T01:36:44.9871125Z         },
2026-06-21T01:36:44.9871236Z         "int": {
2026-06-21T01:36:44.9871344Z           "complete": false,
2026-06-21T01:36:44.9871459Z           "evidence": []
2026-06-21T01:36:44.9871677Z         },
2026-06-21T01:36:44.9871779Z         "unit": {
2026-06-21T01:36:44.9871903Z           "complete": false,
2026-06-21T01:36:44.9872011Z           "evidence": []
2026-06-21T01:36:44.9872115Z         }
2026-06-21T01:36:44.9872216Z       }
2026-06-21T01:36:44.9872318Z     },
2026-06-21T01:36:44.9872413Z     {
2026-06-21T01:36:44.9872562Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T01:36:44.9876511Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T01:36:44.9880289Z       "requiredStages": [
2026-06-21T01:36:44.9880527Z         "impl",
2026-06-21T01:36:44.9880736Z         "unit",
2026-06-21T01:36:44.9880951Z         "int"
2026-06-21T01:36:44.9881152Z       ],
2026-06-21T01:36:44.9881355Z       "stages": {
2026-06-21T01:36:44.9881595Z         "doc": {
2026-06-21T01:36:44.9881824Z           "complete": false,
2026-06-21T01:36:44.9882073Z           "evidence": []
2026-06-21T01:36:44.9882300Z         },
2026-06-21T01:36:44.9882510Z         "impl": {
2026-06-21T01:36:44.9882728Z           "complete": true,
2026-06-21T01:36:44.9882978Z           "evidence": [
2026-06-21T01:36:44.9883208Z             {
2026-06-21T01:36:44.9883480Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9883794Z               "line": 570
2026-06-21T01:36:44.9884019Z             },
2026-06-21T01:36:44.9884232Z             {
2026-06-21T01:36:44.9884491Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9884800Z               "line": 594
2026-06-21T01:36:44.9885026Z             },
2026-06-21T01:36:44.9885235Z             {
2026-06-21T01:36:44.9890083Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9890422Z               "line": 620
2026-06-21T01:36:44.9890654Z             },
2026-06-21T01:36:44.9890882Z             {
2026-06-21T01:36:44.9891145Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9891459Z               "line": 679
2026-06-21T01:36:44.9891684Z             },
2026-06-21T01:36:44.9891892Z             {
2026-06-21T01:36:44.9892136Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:44.9892579Z               "line": 89
2026-06-21T01:36:44.9892807Z             },
2026-06-21T01:36:44.9893014Z             {
2026-06-21T01:36:44.9893255Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:44.9893534Z               "line": 134
2026-06-21T01:36:44.9893759Z             }
2026-06-21T01:36:44.9893964Z           ]
2026-06-21T01:36:44.9894197Z         },
2026-06-21T01:36:44.9894388Z         "int": {
2026-06-21T01:36:44.9894613Z           "complete": true,
2026-06-21T01:36:44.9894850Z           "evidence": [
2026-06-21T01:36:44.9895070Z             {
2026-06-21T01:36:44.9895350Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T01:36:44.9895800Z               "line": 20
2026-06-21T01:36:44.9896032Z             }
2026-06-21T01:36:44.9896232Z           ]
2026-06-21T01:36:44.9896429Z         },
2026-06-21T01:36:44.9896635Z         "unit": {
2026-06-21T01:36:44.9896860Z           "complete": true,
2026-06-21T01:36:44.9897127Z           "evidence": [
2026-06-21T01:36:44.9897359Z             {
2026-06-21T01:36:44.9897622Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:44.9897922Z               "line": 1047
2026-06-21T01:36:44.9898189Z             },
2026-06-21T01:36:44.9898420Z             {
2026-06-21T01:36:44.9898674Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:44.9899068Z               "line": 445
2026-06-21T01:36:44.9899316Z             }
2026-06-21T01:36:44.9899521Z           ]
2026-06-21T01:36:44.9899718Z         }
2026-06-21T01:36:44.9899917Z       }
2026-06-21T01:36:44.9900117Z     },
2026-06-21T01:36:44.9900308Z     {
2026-06-21T01:36:44.9900570Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T01:36:44.9903621Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T01:36:44.9905940Z       "requiredStages": [
2026-06-21T01:36:44.9906174Z         "doc",
2026-06-21T01:36:44.9906394Z         "impl",
2026-06-21T01:36:44.9906606Z         "unit",
2026-06-21T01:36:44.9906806Z         "int"
2026-06-21T01:36:44.9907009Z       ],
2026-06-21T01:36:44.9907219Z       "stages": {
2026-06-21T01:36:44.9907420Z         "doc": {
2026-06-21T01:36:44.9907638Z           "complete": true,
2026-06-21T01:36:44.9907886Z           "evidence": [
2026-06-21T01:36:44.9908115Z             {
2026-06-21T01:36:44.9908350Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:44.9908636Z               "line": 302
2026-06-21T01:36:44.9908864Z             }
2026-06-21T01:36:44.9909149Z           ]
2026-06-21T01:36:44.9909363Z         },
2026-06-21T01:36:44.9909566Z         "impl": {
2026-06-21T01:36:44.9909785Z           "complete": true,
2026-06-21T01:36:44.9910029Z           "evidence": [
2026-06-21T01:36:44.9910254Z             {
2026-06-21T01:36:44.9910520Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:44.9910820Z               "line": 108
2026-06-21T01:36:44.9911054Z             },
2026-06-21T01:36:44.9911256Z             {
2026-06-21T01:36:44.9911503Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9911789Z               "line": 843
2026-06-21T01:36:44.9912002Z             },
2026-06-21T01:36:44.9912217Z             {
2026-06-21T01:36:44.9912455Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:44.9912856Z               "line": 1043
2026-06-21T01:36:44.9913085Z             },
2026-06-21T01:36:44.9913275Z             {
2026-06-21T01:36:44.9913523Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9913815Z               "line": 23
2026-06-21T01:36:44.9914038Z             },
2026-06-21T01:36:44.9914238Z             {
2026-06-21T01:36:44.9914494Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9914789Z               "line": 113
2026-06-21T01:36:44.9915012Z             },
2026-06-21T01:36:44.9915217Z             {
2026-06-21T01:36:44.9915565Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9915866Z               "line": 158
2026-06-21T01:36:44.9916085Z             },
2026-06-21T01:36:44.9916315Z             {
2026-06-21T01:36:44.9916571Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9916858Z               "line": 218
2026-06-21T01:36:44.9917081Z             },
2026-06-21T01:36:44.9917276Z             {
2026-06-21T01:36:44.9917516Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9917807Z               "line": 261
2026-06-21T01:36:44.9918032Z             },
2026-06-21T01:36:44.9918238Z             {
2026-06-21T01:36:44.9918489Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9918771Z               "line": 275
2026-06-21T01:36:44.9919067Z             },
2026-06-21T01:36:44.9919287Z             {
2026-06-21T01:36:44.9919535Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9919819Z               "line": 320
2026-06-21T01:36:44.9920054Z             },
2026-06-21T01:36:44.9920256Z             {
2026-06-21T01:36:44.9920499Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9920804Z               "line": 347
2026-06-21T01:36:44.9921022Z             },
2026-06-21T01:36:44.9921232Z             {
2026-06-21T01:36:44.9921491Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9921792Z               "line": 359
2026-06-21T01:36:44.9922015Z             },
2026-06-21T01:36:44.9922210Z             {
2026-06-21T01:36:44.9922455Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9922748Z               "line": 373
2026-06-21T01:36:44.9922976Z             },
2026-06-21T01:36:44.9923178Z             {
2026-06-21T01:36:44.9923421Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9923717Z               "line": 400
2026-06-21T01:36:44.9923935Z             },
2026-06-21T01:36:44.9924145Z             {
2026-06-21T01:36:44.9924394Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9924695Z               "line": 643
2026-06-21T01:36:44.9924926Z             },
2026-06-21T01:36:44.9925129Z             {
2026-06-21T01:36:44.9925383Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9925668Z               "line": 989
2026-06-21T01:36:44.9925897Z             },
2026-06-21T01:36:44.9926096Z             {
2026-06-21T01:36:44.9926340Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9926631Z               "line": 260
2026-06-21T01:36:44.9926846Z             },
2026-06-21T01:36:44.9927041Z             {
2026-06-21T01:36:44.9927289Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9927576Z               "line": 1143
2026-06-21T01:36:44.9927803Z             },
2026-06-21T01:36:44.9928001Z             {
2026-06-21T01:36:44.9928240Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9928535Z               "line": 1215
2026-06-21T01:36:44.9928764Z             },
2026-06-21T01:36:44.9929079Z             {
2026-06-21T01:36:44.9929326Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9929622Z               "line": 1227
2026-06-21T01:36:44.9929837Z             },
2026-06-21T01:36:44.9930142Z             {
2026-06-21T01:36:44.9930384Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9930672Z               "line": 1842
2026-06-21T01:36:44.9930901Z             },
2026-06-21T01:36:44.9931098Z             {
2026-06-21T01:36:44.9931335Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9931616Z               "line": 188
2026-06-21T01:36:44.9931836Z             },
2026-06-21T01:36:44.9932037Z             {
2026-06-21T01:36:44.9932275Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9932556Z               "line": 265
2026-06-21T01:36:44.9932789Z             },
2026-06-21T01:36:44.9933122Z             {
2026-06-21T01:36:44.9933366Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9933653Z               "line": 276
2026-06-21T01:36:44.9933870Z             },
2026-06-21T01:36:44.9934076Z             {
2026-06-21T01:36:44.9934320Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:44.9934611Z               "line": 329
2026-06-21T01:36:44.9934829Z             },
2026-06-21T01:36:44.9935029Z             {
2026-06-21T01:36:44.9935278Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9935567Z               "line": 56
2026-06-21T01:36:44.9935793Z             },
2026-06-21T01:36:44.9935999Z             {
2026-06-21T01:36:44.9936247Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9936538Z               "line": 188
2026-06-21T01:36:44.9936757Z             },
2026-06-21T01:36:44.9936957Z             {
2026-06-21T01:36:44.9937205Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:36:44.9937506Z               "line": 82
2026-06-21T01:36:44.9937731Z             },
2026-06-21T01:36:44.9937949Z             {
2026-06-21T01:36:44.9938197Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9938486Z               "line": 308
2026-06-21T01:36:44.9938713Z             },
2026-06-21T01:36:44.9938923Z             {
2026-06-21T01:36:44.9939257Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:44.9939552Z               "line": 424
2026-06-21T01:36:44.9939777Z             },
2026-06-21T01:36:44.9939982Z             {
2026-06-21T01:36:44.9940220Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:44.9940501Z               "line": 2006
2026-06-21T01:36:44.9940726Z             }
2026-06-21T01:36:44.9940929Z           ]
2026-06-21T01:36:44.9941128Z         },
2026-06-21T01:36:44.9941328Z         "int": {
2026-06-21T01:36:44.9941557Z           "complete": true,
2026-06-21T01:36:44.9941800Z           "evidence": [
2026-06-21T01:36:44.9942020Z             {
2026-06-21T01:36:44.9942277Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T01:36:44.9942578Z               "line": 57
2026-06-21T01:36:44.9942815Z             },
2026-06-21T01:36:44.9943025Z             {
2026-06-21T01:36:44.9943255Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T01:36:44.9943541Z               "line": 41
2026-06-21T01:36:44.9943758Z             }
2026-06-21T01:36:44.9943974Z           ]
2026-06-21T01:36:44.9944178Z         },
2026-06-21T01:36:44.9944383Z         "unit": {
2026-06-21T01:36:44.9944603Z           "complete": true,
2026-06-21T01:36:44.9944851Z           "evidence": [
2026-06-21T01:36:44.9945070Z             {
2026-06-21T01:36:44.9945332Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:44.9945637Z               "line": 532
2026-06-21T01:36:44.9945862Z             },
2026-06-21T01:36:44.9946070Z             {
2026-06-21T01:36:44.9946320Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:44.9946616Z               "line": 757
2026-06-21T01:36:44.9946841Z             },
2026-06-21T01:36:44.9947056Z             {
2026-06-21T01:36:44.9947302Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9947588Z               "line": 1067
2026-06-21T01:36:44.9947813Z             },
2026-06-21T01:36:44.9948137Z             {
2026-06-21T01:36:44.9948391Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9948692Z               "line": 1101
2026-06-21T01:36:44.9948918Z             },
2026-06-21T01:36:44.9949206Z             {
2026-06-21T01:36:44.9949455Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9949764Z               "line": 1143
2026-06-21T01:36:44.9949989Z             },
2026-06-21T01:36:44.9950204Z             {
2026-06-21T01:36:44.9950451Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9950732Z               "line": 1215
2026-06-21T01:36:44.9951057Z             },
2026-06-21T01:36:44.9951253Z             {
2026-06-21T01:36:44.9951508Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9951807Z               "line": 1228
2026-06-21T01:36:44.9952031Z             },
2026-06-21T01:36:44.9952251Z             {
2026-06-21T01:36:44.9952499Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9952800Z               "line": 1251
2026-06-21T01:36:44.9953023Z             },
2026-06-21T01:36:44.9953223Z             {
2026-06-21T01:36:44.9953463Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9953763Z               "line": 1277
2026-06-21T01:36:44.9953986Z             },
2026-06-21T01:36:44.9954182Z             {
2026-06-21T01:36:44.9954438Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9954725Z               "line": 1291
2026-06-21T01:36:44.9954952Z             },
2026-06-21T01:36:44.9955153Z             {
2026-06-21T01:36:44.9955402Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9955712Z               "line": 1315
2026-06-21T01:36:44.9955935Z             },
2026-06-21T01:36:44.9956145Z             {
2026-06-21T01:36:44.9956398Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9956692Z               "line": 1447
2026-06-21T01:36:44.9956923Z             },
2026-06-21T01:36:44.9957129Z             {
2026-06-21T01:36:44.9957363Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9957664Z               "line": 1623
2026-06-21T01:36:44.9957892Z             },
2026-06-21T01:36:44.9958097Z             {
2026-06-21T01:36:44.9958345Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9958636Z               "line": 1678
2026-06-21T01:36:44.9958861Z             },
2026-06-21T01:36:44.9959137Z             {
2026-06-21T01:36:44.9959397Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9959695Z               "line": 1724
2026-06-21T01:36:44.9959934Z             },
2026-06-21T01:36:44.9960134Z             {
2026-06-21T01:36:44.9960382Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9960672Z               "line": 1769
2026-06-21T01:36:44.9960892Z             },
2026-06-21T01:36:44.9961098Z             {
2026-06-21T01:36:44.9961350Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9961636Z               "line": 1813
2026-06-21T01:36:44.9961860Z             },
2026-06-21T01:36:44.9962064Z             {
2026-06-21T01:36:44.9962309Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:44.9962610Z               "line": 1855
2026-06-21T01:36:44.9962830Z             },
2026-06-21T01:36:44.9963030Z             {
2026-06-21T01:36:44.9963282Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:44.9963578Z               "line": 2176
2026-06-21T01:36:44.9963807Z             },
2026-06-21T01:36:44.9964009Z             {
2026-06-21T01:36:44.9964250Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9964551Z               "line": 217
2026-06-21T01:36:44.9964779Z             },
2026-06-21T01:36:44.9964989Z             {
2026-06-21T01:36:44.9965236Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9965624Z               "line": 233
2026-06-21T01:36:44.9965846Z             },
2026-06-21T01:36:44.9966047Z             {
2026-06-21T01:36:44.9966296Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9966596Z               "line": 254
2026-06-21T01:36:44.9966834Z             },
2026-06-21T01:36:44.9967034Z             {
2026-06-21T01:36:44.9967281Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9967560Z               "line": 265
2026-06-21T01:36:44.9967784Z             },
2026-06-21T01:36:44.9967989Z             {
2026-06-21T01:36:44.9968238Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9968633Z               "line": 278
2026-06-21T01:36:44.9968848Z             },
2026-06-21T01:36:44.9969139Z             {
2026-06-21T01:36:44.9969377Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9969667Z               "line": 289
2026-06-21T01:36:44.9969887Z             },
2026-06-21T01:36:44.9970096Z             {
2026-06-21T01:36:44.9970346Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9970632Z               "line": 301
2026-06-21T01:36:44.9970867Z             },
2026-06-21T01:36:44.9971067Z             {
2026-06-21T01:36:44.9971309Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9971605Z               "line": 312
2026-06-21T01:36:44.9971828Z             },
2026-06-21T01:36:44.9972026Z             {
2026-06-21T01:36:44.9972273Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9972567Z               "line": 323
2026-06-21T01:36:44.9972789Z             },
2026-06-21T01:36:44.9973004Z             {
2026-06-21T01:36:44.9973251Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9973542Z               "line": 332
2026-06-21T01:36:44.9973762Z             },
2026-06-21T01:36:44.9977385Z             {
2026-06-21T01:36:44.9977726Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9978044Z               "line": 342
2026-06-21T01:36:44.9978282Z             },
2026-06-21T01:36:44.9978479Z             {
2026-06-21T01:36:44.9978731Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T01:36:44.9979112Z               "line": 358
2026-06-21T01:36:44.9979331Z             },
2026-06-21T01:36:44.9979522Z             {
2026-06-21T01:36:44.9979770Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9980067Z               "line": 758
2026-06-21T01:36:44.9980286Z             },
2026-06-21T01:36:44.9980494Z             {
2026-06-21T01:36:44.9980745Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:44.9981050Z               "line": 794
2026-06-21T01:36:44.9981274Z             },
2026-06-21T01:36:44.9981473Z             {
2026-06-21T01:36:44.9981722Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:44.9982018Z               "line": 966
2026-06-21T01:36:44.9982247Z             },
2026-06-21T01:36:44.9982451Z             {
2026-06-21T01:36:44.9982694Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:36:44.9982990Z               "line": 145
2026-06-21T01:36:44.9983203Z             },
2026-06-21T01:36:44.9983401Z             {
2026-06-21T01:36:44.9983646Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:36:44.9983936Z               "line": 224
2026-06-21T01:36:44.9984155Z             },
2026-06-21T01:36:44.9984359Z             {
2026-06-21T01:36:44.9984598Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T01:36:44.9984889Z               "line": 293
2026-06-21T01:36:44.9985109Z             },
2026-06-21T01:36:44.9985318Z             {
2026-06-21T01:36:44.9985556Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T01:36:44.9985848Z               "line": 17
2026-06-21T01:36:44.9986071Z             },
2026-06-21T01:36:44.9986285Z             {
2026-06-21T01:36:44.9986524Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T01:36:44.9986962Z               "line": 104
2026-06-21T01:36:44.9987187Z             }
2026-06-21T01:36:44.9987388Z           ]
2026-06-21T01:36:44.9987587Z         }
2026-06-21T01:36:44.9987778Z       }
2026-06-21T01:36:44.9987969Z     },
2026-06-21T01:36:44.9988159Z     {
2026-06-21T01:36:44.9988401Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T01:36:44.9991953Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T01:36:44.9995097Z       "requiredStages": [
2026-06-21T01:36:44.9995335Z         "doc",
2026-06-21T01:36:44.9995526Z         "impl",
2026-06-21T01:36:44.9995727Z         "unit",
2026-06-21T01:36:44.9995931Z         "int"
2026-06-21T01:36:44.9996135Z       ],
2026-06-21T01:36:44.9996333Z       "stages": {
2026-06-21T01:36:44.9996545Z         "doc": {
2026-06-21T01:36:44.9996761Z           "complete": true,
2026-06-21T01:36:44.9997009Z           "evidence": [
2026-06-21T01:36:44.9997226Z             {
2026-06-21T01:36:44.9997465Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:44.9997742Z               "line": 388
2026-06-21T01:36:44.9997963Z             }
2026-06-21T01:36:44.9998161Z           ]
2026-06-21T01:36:44.9998357Z         },
2026-06-21T01:36:44.9998553Z         "impl": {
2026-06-21T01:36:44.9998776Z           "complete": true,
2026-06-21T01:36:44.9999102Z           "evidence": [
2026-06-21T01:36:44.9999318Z             {
2026-06-21T01:36:44.9999565Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:44.9999871Z               "line": 773
2026-06-21T01:36:45.0000084Z             },
2026-06-21T01:36:45.0000290Z             {
2026-06-21T01:36:45.0000533Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.0000839Z               "line": 796
2026-06-21T01:36:45.0001067Z             }
2026-06-21T01:36:45.0001271Z           ]
2026-06-21T01:36:45.0001459Z         },
2026-06-21T01:36:45.0001661Z         "int": {
2026-06-21T01:36:45.0001884Z           "complete": true,
2026-06-21T01:36:45.0002122Z           "evidence": [
2026-06-21T01:36:45.0002351Z             {
2026-06-21T01:36:45.0002603Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:36:45.0002918Z               "line": 228
2026-06-21T01:36:45.0003142Z             },
2026-06-21T01:36:45.0003338Z             {
2026-06-21T01:36:45.0003586Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:36:45.0003872Z               "line": 468
2026-06-21T01:36:45.0004092Z             }
2026-06-21T01:36:45.0004290Z           ]
2026-06-21T01:36:45.0004489Z         },
2026-06-21T01:36:45.0004684Z         "unit": {
2026-06-21T01:36:45.0004908Z           "complete": true,
2026-06-21T01:36:45.0005146Z           "evidence": [
2026-06-21T01:36:45.0005366Z             {
2026-06-21T01:36:45.0005614Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.0005905Z               "line": 1495
2026-06-21T01:36:45.0006133Z             }
2026-06-21T01:36:45.0006329Z           ]
2026-06-21T01:36:45.0006530Z         }
2026-06-21T01:36:45.0006864Z       }
2026-06-21T01:36:45.0007057Z     },
2026-06-21T01:36:45.0007254Z     {
2026-06-21T01:36:45.0007486Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T01:36:45.0011719Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T01:36:45.0015312Z       "requiredStages": [
2026-06-21T01:36:45.0015536Z         "doc",
2026-06-21T01:36:45.0015739Z         "impl",
2026-06-21T01:36:45.0015941Z         "unit"
2026-06-21T01:36:45.0016141Z       ],
2026-06-21T01:36:45.0016360Z       "stages": {
2026-06-21T01:36:45.0016565Z         "doc": {
2026-06-21T01:36:45.0016785Z           "complete": true,
2026-06-21T01:36:45.0017018Z           "evidence": [
2026-06-21T01:36:45.0017232Z             {
2026-06-21T01:36:45.0017472Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0017761Z               "line": 395
2026-06-21T01:36:45.0017979Z             }
2026-06-21T01:36:45.0018180Z           ]
2026-06-21T01:36:45.0018381Z         },
2026-06-21T01:36:45.0018576Z         "impl": {
2026-06-21T01:36:45.0018796Z           "complete": true,
2026-06-21T01:36:45.0019111Z           "evidence": [
2026-06-21T01:36:45.0019330Z             {
2026-06-21T01:36:45.0019577Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0019858Z               "line": 75
2026-06-21T01:36:45.0020077Z             }
2026-06-21T01:36:45.0020284Z           ]
2026-06-21T01:36:45.0020475Z         },
2026-06-21T01:36:45.0020671Z         "int": {
2026-06-21T01:36:45.0020899Z           "complete": false,
2026-06-21T01:36:45.0021138Z           "evidence": []
2026-06-21T01:36:45.0021358Z         },
2026-06-21T01:36:45.0021557Z         "unit": {
2026-06-21T01:36:45.0021772Z           "complete": true,
2026-06-21T01:36:45.0022006Z           "evidence": [
2026-06-21T01:36:45.0022217Z             {
2026-06-21T01:36:45.0022459Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0022739Z               "line": 632
2026-06-21T01:36:45.0022953Z             }
2026-06-21T01:36:45.0023151Z           ]
2026-06-21T01:36:45.0023343Z         }
2026-06-21T01:36:45.0023529Z       }
2026-06-21T01:36:45.0023719Z     },
2026-06-21T01:36:45.0023910Z     {
2026-06-21T01:36:45.0024134Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T01:36:45.0024517Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T01:36:45.0024864Z       "requiredStages": [
2026-06-21T01:36:45.0025098Z         "impl",
2026-06-21T01:36:45.0025316Z         "unit"
2026-06-21T01:36:45.0025515Z       ],
2026-06-21T01:36:45.0025708Z       "stages": {
2026-06-21T01:36:45.0025923Z         "doc": {
2026-06-21T01:36:45.0026153Z           "complete": false,
2026-06-21T01:36:45.0026391Z           "evidence": []
2026-06-21T01:36:45.0026610Z         },
2026-06-21T01:36:45.0026811Z         "impl": {
2026-06-21T01:36:45.0027149Z           "complete": true,
2026-06-21T01:36:45.0027384Z           "evidence": [
2026-06-21T01:36:45.0027592Z             {
2026-06-21T01:36:45.0027736Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.0027854Z               "line": 172
2026-06-21T01:36:45.0027956Z             },
2026-06-21T01:36:45.0028061Z             {
2026-06-21T01:36:45.0028206Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0028306Z               "line": 18
2026-06-21T01:36:45.0028407Z             },
2026-06-21T01:36:45.0028512Z             {
2026-06-21T01:36:45.0028650Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0028873Z               "line": 100
2026-06-21T01:36:45.0029051Z             }
2026-06-21T01:36:45.0029146Z           ]
2026-06-21T01:36:45.0029246Z         },
2026-06-21T01:36:45.0029351Z         "int": {
2026-06-21T01:36:45.0029475Z           "complete": false,
2026-06-21T01:36:45.0029580Z           "evidence": []
2026-06-21T01:36:45.0029690Z         },
2026-06-21T01:36:45.0029799Z         "unit": {
2026-06-21T01:36:45.0029910Z           "complete": true,
2026-06-21T01:36:45.0030010Z           "evidence": [
2026-06-21T01:36:45.0030114Z             {
2026-06-21T01:36:45.0030258Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.0030366Z               "line": 857
2026-06-21T01:36:45.0030466Z             },
2026-06-21T01:36:45.0030570Z             {
2026-06-21T01:36:45.0030702Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0030816Z               "line": 161
2026-06-21T01:36:45.0030921Z             },
2026-06-21T01:36:45.0031021Z             {
2026-06-21T01:36:45.0031164Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0031279Z               "line": 233
2026-06-21T01:36:45.0031379Z             }
2026-06-21T01:36:45.0031483Z           ]
2026-06-21T01:36:45.0031585Z         }
2026-06-21T01:36:45.0031684Z       }
2026-06-21T01:36:45.0031784Z     },
2026-06-21T01:36:45.0031895Z     {
2026-06-21T01:36:45.0032036Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T01:36:45.0032510Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T01:36:45.0032627Z       "requiredStages": [
2026-06-21T01:36:45.0032733Z         "impl",
2026-06-21T01:36:45.0032830Z         "unit"
2026-06-21T01:36:45.0032928Z       ],
2026-06-21T01:36:45.0033024Z       "stages": {
2026-06-21T01:36:45.0033125Z         "doc": {
2026-06-21T01:36:45.0033243Z           "complete": true,
2026-06-21T01:36:45.0033347Z           "evidence": [
2026-06-21T01:36:45.0033461Z             {
2026-06-21T01:36:45.0033593Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0033702Z               "line": 220
2026-06-21T01:36:45.0033803Z             }
2026-06-21T01:36:45.0033903Z           ]
2026-06-21T01:36:45.0033998Z         },
2026-06-21T01:36:45.0034104Z         "impl": {
2026-06-21T01:36:45.0034223Z           "complete": true,
2026-06-21T01:36:45.0034331Z           "evidence": [
2026-06-21T01:36:45.0034428Z             {
2026-06-21T01:36:45.0034579Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.0034685Z               "line": 316
2026-06-21T01:36:45.0034785Z             },
2026-06-21T01:36:45.0034885Z             {
2026-06-21T01:36:45.0035038Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0035147Z               "line": 356
2026-06-21T01:36:45.0035247Z             },
2026-06-21T01:36:45.0035348Z             {
2026-06-21T01:36:45.0035509Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0035619Z               "line": 578
2026-06-21T01:36:45.0035711Z             },
2026-06-21T01:36:45.0035819Z             {
2026-06-21T01:36:45.0035966Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0036080Z               "line": 77
2026-06-21T01:36:45.0036298Z             }
2026-06-21T01:36:45.0036403Z           ]
2026-06-21T01:36:45.0036512Z         },
2026-06-21T01:36:45.0036608Z         "int": {
2026-06-21T01:36:45.0036732Z           "complete": false,
2026-06-21T01:36:45.0036836Z           "evidence": []
2026-06-21T01:36:45.0036941Z         },
2026-06-21T01:36:45.0037042Z         "unit": {
2026-06-21T01:36:45.0037165Z           "complete": true,
2026-06-21T01:36:45.0037276Z           "evidence": [
2026-06-21T01:36:45.0037380Z             {
2026-06-21T01:36:45.0037532Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0037643Z               "line": 747
2026-06-21T01:36:45.0037738Z             },
2026-06-21T01:36:45.0037934Z             {
2026-06-21T01:36:45.0038086Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0038191Z               "line": 785
2026-06-21T01:36:45.0038292Z             },
2026-06-21T01:36:45.0038395Z             {
2026-06-21T01:36:45.0038526Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0038635Z               "line": 166
2026-06-21T01:36:45.0038738Z             }
2026-06-21T01:36:45.0038847Z           ]
2026-06-21T01:36:45.0039020Z         }
2026-06-21T01:36:45.0039114Z       }
2026-06-21T01:36:45.0039220Z     },
2026-06-21T01:36:45.0039311Z     {
2026-06-21T01:36:45.0039457Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T01:36:45.0040077Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T01:36:45.0040198Z       "requiredStages": [
2026-06-21T01:36:45.0040306Z         "impl",
2026-06-21T01:36:45.0040411Z         "unit"
2026-06-21T01:36:45.0040513Z       ],
2026-06-21T01:36:45.0040621Z       "stages": {
2026-06-21T01:36:45.0040721Z         "doc": {
2026-06-21T01:36:45.0040837Z           "complete": false,
2026-06-21T01:36:45.0040950Z           "evidence": []
2026-06-21T01:36:45.0041054Z         },
2026-06-21T01:36:45.0041173Z         "impl": {
2026-06-21T01:36:45.0041305Z           "complete": true,
2026-06-21T01:36:45.0041409Z           "evidence": [
2026-06-21T01:36:45.0041511Z             {
2026-06-21T01:36:45.0041662Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:36:45.0041768Z               "line": 22
2026-06-21T01:36:45.0041877Z             },
2026-06-21T01:36:45.0041972Z             {
2026-06-21T01:36:45.0042111Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0042216Z               "line": 487
2026-06-21T01:36:45.0042320Z             },
2026-06-21T01:36:45.0042421Z             {
2026-06-21T01:36:45.0042568Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:36:45.0042683Z               "line": 17
2026-06-21T01:36:45.0042788Z             },
2026-06-21T01:36:45.0042893Z             {
2026-06-21T01:36:45.0043032Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:36:45.0043145Z               "line": 147
2026-06-21T01:36:45.0043250Z             },
2026-06-21T01:36:45.0043347Z             {
2026-06-21T01:36:45.0043512Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0043613Z               "line": 226
2026-06-21T01:36:45.0043728Z             },
2026-06-21T01:36:45.0043831Z             {
2026-06-21T01:36:45.0043988Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0044092Z               "line": 251
2026-06-21T01:36:45.0044181Z             },
2026-06-21T01:36:45.0044286Z             {
2026-06-21T01:36:45.0044445Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0044558Z               "line": 277
2026-06-21T01:36:45.0044669Z             },
2026-06-21T01:36:45.0044764Z             {
2026-06-21T01:36:45.0044915Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.0045026Z               "line": 124
2026-06-21T01:36:45.0045126Z             },
2026-06-21T01:36:45.0045331Z             {
2026-06-21T01:36:45.0045473Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.0045589Z               "line": 224
2026-06-21T01:36:45.0045689Z             }
2026-06-21T01:36:45.0045793Z           ]
2026-06-21T01:36:45.0045884Z         },
2026-06-21T01:36:45.0045990Z         "int": {
2026-06-21T01:36:45.0046108Z           "complete": false,
2026-06-21T01:36:45.0046209Z           "evidence": []
2026-06-21T01:36:45.0046314Z         },
2026-06-21T01:36:45.0046412Z         "unit": {
2026-06-21T01:36:45.0046531Z           "complete": true,
2026-06-21T01:36:45.0046640Z           "evidence": [
2026-06-21T01:36:45.0046833Z             {
2026-06-21T01:36:45.0046983Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:36:45.0047091Z               "line": 63
2026-06-21T01:36:45.0047201Z             },
2026-06-21T01:36:45.0047306Z             {
2026-06-21T01:36:45.0047458Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:36:45.0047574Z               "line": 73
2026-06-21T01:36:45.0047664Z             },
2026-06-21T01:36:45.0047768Z             {
2026-06-21T01:36:45.0047917Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T01:36:45.0048016Z               "line": 85
2026-06-21T01:36:45.0048121Z             },
2026-06-21T01:36:45.0048218Z             {
2026-06-21T01:36:45.0048359Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:36:45.0048465Z               "line": 346
2026-06-21T01:36:45.0048565Z             },
2026-06-21T01:36:45.0048670Z             {
2026-06-21T01:36:45.0048814Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:36:45.0048922Z               "line": 281
2026-06-21T01:36:45.0049114Z             },
2026-06-21T01:36:45.0049218Z             {
2026-06-21T01:36:45.0049369Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:36:45.0049475Z               "line": 322
2026-06-21T01:36:45.0049584Z             },
2026-06-21T01:36:45.0049698Z             {
2026-06-21T01:36:45.0049842Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T01:36:45.0049951Z               "line": 360
2026-06-21T01:36:45.0050047Z             },
2026-06-21T01:36:45.0050143Z             {
2026-06-21T01:36:45.0050299Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0050405Z               "line": 688
2026-06-21T01:36:45.0050514Z             },
2026-06-21T01:36:45.0050614Z             {
2026-06-21T01:36:45.0050767Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.0050867Z               "line": 397
2026-06-21T01:36:45.0050971Z             },
2026-06-21T01:36:45.0051078Z             {
2026-06-21T01:36:45.0051224Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.0051325Z               "line": 440
2026-06-21T01:36:45.0051425Z             }
2026-06-21T01:36:45.0051515Z           ]
2026-06-21T01:36:45.0051610Z         }
2026-06-21T01:36:45.0051715Z       }
2026-06-21T01:36:45.0051822Z     },
2026-06-21T01:36:45.0051926Z     {
2026-06-21T01:36:45.0052051Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T01:36:45.0052294Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T01:36:45.0052414Z       "requiredStages": [
2026-06-21T01:36:45.0052513Z         "impl",
2026-06-21T01:36:45.0052613Z         "unit"
2026-06-21T01:36:45.0052714Z       ],
2026-06-21T01:36:45.0052813Z       "stages": {
2026-06-21T01:36:45.0052919Z         "doc": {
2026-06-21T01:36:45.0053024Z           "complete": false,
2026-06-21T01:36:45.0053143Z           "evidence": []
2026-06-21T01:36:45.0053243Z         },
2026-06-21T01:36:45.0053353Z         "impl": {
2026-06-21T01:36:45.0053457Z           "complete": true,
2026-06-21T01:36:45.0053563Z           "evidence": [
2026-06-21T01:36:45.0053668Z             {
2026-06-21T01:36:45.0053824Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:36:45.0053945Z               "line": 169
2026-06-21T01:36:45.0054168Z             }
2026-06-21T01:36:45.0054274Z           ]
2026-06-21T01:36:45.0054373Z         },
2026-06-21T01:36:45.0054476Z         "int": {
2026-06-21T01:36:45.0054600Z           "complete": true,
2026-06-21T01:36:45.0054708Z           "evidence": [
2026-06-21T01:36:45.0054817Z             {
2026-06-21T01:36:45.0054957Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T01:36:45.0055061Z               "line": 44
2026-06-21T01:36:45.0055165Z             },
2026-06-21T01:36:45.0055281Z             {
2026-06-21T01:36:45.0055418Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T01:36:45.0055524Z               "line": 66
2026-06-21T01:36:45.0055728Z             }
2026-06-21T01:36:45.0055834Z           ]
2026-06-21T01:36:45.0055939Z         },
2026-06-21T01:36:45.0056034Z         "unit": {
2026-06-21T01:36:45.0056159Z           "complete": true,
2026-06-21T01:36:45.0056277Z           "evidence": [
2026-06-21T01:36:45.0056376Z             {
2026-06-21T01:36:45.0056535Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:36:45.0056643Z               "line": 186
2026-06-21T01:36:45.0056745Z             },
2026-06-21T01:36:45.0056850Z             {
2026-06-21T01:36:45.0056986Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:36:45.0057101Z               "line": 238
2026-06-21T01:36:45.0057196Z             },
2026-06-21T01:36:45.0057303Z             {
2026-06-21T01:36:45.0057442Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T01:36:45.0057553Z               "line": 266
2026-06-21T01:36:45.0057656Z             }
2026-06-21T01:36:45.0057761Z           ]
2026-06-21T01:36:45.0057866Z         }
2026-06-21T01:36:45.0057966Z       }
2026-06-21T01:36:45.0058067Z     },
2026-06-21T01:36:45.0058157Z     {
2026-06-21T01:36:45.0058295Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T01:36:45.0062941Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T01:36:45.0063120Z       "requiredStages": [],
2026-06-21T01:36:45.0063227Z       "stages": {
2026-06-21T01:36:45.0063331Z         "doc": {
2026-06-21T01:36:45.0063445Z           "complete": false,
2026-06-21T01:36:45.0063560Z           "evidence": []
2026-06-21T01:36:45.0063670Z         },
2026-06-21T01:36:45.0063764Z         "impl": {
2026-06-21T01:36:45.0063894Z           "complete": false,
2026-06-21T01:36:45.0063994Z           "evidence": []
2026-06-21T01:36:45.0064098Z         },
2026-06-21T01:36:45.0064204Z         "int": {
2026-06-21T01:36:45.0064322Z           "complete": false,
2026-06-21T01:36:45.0064438Z           "evidence": []
2026-06-21T01:36:45.0064533Z         },
2026-06-21T01:36:45.0064743Z         "unit": {
2026-06-21T01:36:45.0064858Z           "complete": false,
2026-06-21T01:36:45.0064966Z           "evidence": []
2026-06-21T01:36:45.0065060Z         }
2026-06-21T01:36:45.0065165Z       }
2026-06-21T01:36:45.0065259Z     },
2026-06-21T01:36:45.0065358Z     {
2026-06-21T01:36:45.0065512Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T01:36:45.0080422Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T01:36:45.0080993Z       "requiredStages": [
2026-06-21T01:36:45.0081093Z         "doc",
2026-06-21T01:36:45.0081194Z         "impl",
2026-06-21T01:36:45.0081293Z         "unit",
2026-06-21T01:36:45.0081393Z         "int"
2026-06-21T01:36:45.0081499Z       ],
2026-06-21T01:36:45.0081594Z       "stages": {
2026-06-21T01:36:45.0081703Z         "doc": {
2026-06-21T01:36:45.0081819Z           "complete": true,
2026-06-21T01:36:45.0081923Z           "evidence": [
2026-06-21T01:36:45.0082023Z             {
2026-06-21T01:36:45.0082166Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0082289Z               "line": 468
2026-06-21T01:36:45.0082386Z             }
2026-06-21T01:36:45.0082486Z           ]
2026-06-21T01:36:45.0082585Z         },
2026-06-21T01:36:45.0082691Z         "impl": {
2026-06-21T01:36:45.0082801Z           "complete": true,
2026-06-21T01:36:45.0082914Z           "evidence": [
2026-06-21T01:36:45.0083020Z             {
2026-06-21T01:36:45.0083171Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0083290Z               "line": 342
2026-06-21T01:36:45.0083395Z             },
2026-06-21T01:36:45.0083498Z             {
2026-06-21T01:36:45.0083645Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0083756Z               "line": 1188
2026-06-21T01:36:45.0083860Z             },
2026-06-21T01:36:45.0083960Z             {
2026-06-21T01:36:45.0084113Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0084212Z               "line": 715
2026-06-21T01:36:45.0084328Z             }
2026-06-21T01:36:45.0084437Z           ]
2026-06-21T01:36:45.0084537Z         },
2026-06-21T01:36:45.0084648Z         "int": {
2026-06-21T01:36:45.0084761Z           "complete": true,
2026-06-21T01:36:45.0084866Z           "evidence": [
2026-06-21T01:36:45.0084952Z             {
2026-06-21T01:36:45.0085110Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0085233Z               "line": 1163
2026-06-21T01:36:45.0085339Z             },
2026-06-21T01:36:45.0085443Z             {
2026-06-21T01:36:45.0085597Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.0085714Z               "line": 1146
2026-06-21T01:36:45.0085815Z             }
2026-06-21T01:36:45.0085921Z           ]
2026-06-21T01:36:45.0086025Z         },
2026-06-21T01:36:45.0086133Z         "unit": {
2026-06-21T01:36:45.0086253Z           "complete": true,
2026-06-21T01:36:45.0086360Z           "evidence": [
2026-06-21T01:36:45.0086460Z             {
2026-06-21T01:36:45.0089914Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0090077Z               "line": 2624
2026-06-21T01:36:45.0090181Z             }
2026-06-21T01:36:45.0090285Z           ]
2026-06-21T01:36:45.0090376Z         }
2026-06-21T01:36:45.0090477Z       }
2026-06-21T01:36:45.0090577Z     },
2026-06-21T01:36:45.0090848Z     {
2026-06-21T01:36:45.0091001Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T01:36:45.0091482Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T01:36:45.0091595Z       "requiredStages": [
2026-06-21T01:36:45.0091696Z         "impl",
2026-06-21T01:36:45.0091802Z         "unit",
2026-06-21T01:36:45.0091896Z         "int"
2026-06-21T01:36:45.0092002Z       ],
2026-06-21T01:36:45.0092111Z       "stages": {
2026-06-21T01:36:45.0092215Z         "doc": {
2026-06-21T01:36:45.0092340Z           "complete": false,
2026-06-21T01:36:45.0092544Z           "evidence": []
2026-06-21T01:36:45.0092641Z         },
2026-06-21T01:36:45.0092745Z         "impl": {
2026-06-21T01:36:45.0092863Z           "complete": true,
2026-06-21T01:36:45.0092965Z           "evidence": [
2026-06-21T01:36:45.0093065Z             {
2026-06-21T01:36:45.0093227Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0093347Z               "line": 178
2026-06-21T01:36:45.0093455Z             },
2026-06-21T01:36:45.0093551Z             {
2026-06-21T01:36:45.0093708Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0093827Z               "line": 226
2026-06-21T01:36:45.0093926Z             },
2026-06-21T01:36:45.0094031Z             {
2026-06-21T01:36:45.0094172Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.0094277Z               "line": 79
2026-06-21T01:36:45.0094369Z             },
2026-06-21T01:36:45.0094472Z             {
2026-06-21T01:36:45.0094617Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.0094735Z               "line": 52
2026-06-21T01:36:45.0094834Z             },
2026-06-21T01:36:45.0094936Z             {
2026-06-21T01:36:45.0095068Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0095174Z               "line": 263
2026-06-21T01:36:45.0095279Z             },
2026-06-21T01:36:45.0095392Z             {
2026-06-21T01:36:45.0095541Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0095650Z               "line": 27
2026-06-21T01:36:45.0095750Z             },
2026-06-21T01:36:45.0095842Z             {
2026-06-21T01:36:45.0095993Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0096108Z               "line": 79
2026-06-21T01:36:45.0096214Z             },
2026-06-21T01:36:45.0096312Z             {
2026-06-21T01:36:45.0096462Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0096571Z               "line": 102
2026-06-21T01:36:45.0096679Z             },
2026-06-21T01:36:45.0096789Z             {
2026-06-21T01:36:45.0096935Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0097053Z               "line": 116
2026-06-21T01:36:45.0097159Z             }
2026-06-21T01:36:45.0097264Z           ]
2026-06-21T01:36:45.0097363Z         },
2026-06-21T01:36:45.0097470Z         "int": {
2026-06-21T01:36:45.0097579Z           "complete": true,
2026-06-21T01:36:45.0097692Z           "evidence": [
2026-06-21T01:36:45.0097794Z             {
2026-06-21T01:36:45.0097949Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T01:36:45.0098060Z               "line": 43
2026-06-21T01:36:45.0098165Z             }
2026-06-21T01:36:45.0098274Z           ]
2026-06-21T01:36:45.0098380Z         },
2026-06-21T01:36:45.0098480Z         "unit": {
2026-06-21T01:36:45.0098603Z           "complete": true,
2026-06-21T01:36:45.0098709Z           "evidence": [
2026-06-21T01:36:45.0098818Z             {
2026-06-21T01:36:45.0099048Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0099170Z               "line": 678
2026-06-21T01:36:45.0099274Z             },
2026-06-21T01:36:45.0099375Z             {
2026-06-21T01:36:45.0099525Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0099624Z               "line": 495
2026-06-21T01:36:45.0099835Z             },
2026-06-21T01:36:45.0099934Z             {
2026-06-21T01:36:45.0100088Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0100202Z               "line": 124
2026-06-21T01:36:45.0100297Z             },
2026-06-21T01:36:45.0100403Z             {
2026-06-21T01:36:45.0100545Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0100661Z               "line": 143
2026-06-21T01:36:45.0100755Z             },
2026-06-21T01:36:45.0100865Z             {
2026-06-21T01:36:45.0101018Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0101118Z               "line": 160
2026-06-21T01:36:45.0101323Z             },
2026-06-21T01:36:45.0101427Z             {
2026-06-21T01:36:45.0101571Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0101685Z               "line": 187
2026-06-21T01:36:45.0101795Z             },
2026-06-21T01:36:45.0101896Z             {
2026-06-21T01:36:45.0102038Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T01:36:45.0102160Z               "line": 206
2026-06-21T01:36:45.0102261Z             },
2026-06-21T01:36:45.0102367Z             {
2026-06-21T01:36:45.0102504Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0102610Z               "line": 229
2026-06-21T01:36:45.0102714Z             }
2026-06-21T01:36:45.0102818Z           ]
2026-06-21T01:36:45.0102920Z         }
2026-06-21T01:36:45.0103020Z       }
2026-06-21T01:36:45.0103123Z     },
2026-06-21T01:36:45.0103220Z     {
2026-06-21T01:36:45.0103382Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T01:36:45.0104097Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T01:36:45.0104222Z       "requiredStages": [
2026-06-21T01:36:45.0104329Z         "impl",
2026-06-21T01:36:45.0104438Z         "unit"
2026-06-21T01:36:45.0104539Z       ],
2026-06-21T01:36:45.0104651Z       "stages": {
2026-06-21T01:36:45.0104756Z         "doc": {
2026-06-21T01:36:45.0104876Z           "complete": false,
2026-06-21T01:36:45.0104985Z           "evidence": []
2026-06-21T01:36:45.0105090Z         },
2026-06-21T01:36:45.0105196Z         "impl": {
2026-06-21T01:36:45.0105314Z           "complete": true,
2026-06-21T01:36:45.0105429Z           "evidence": [
2026-06-21T01:36:45.0105524Z             {
2026-06-21T01:36:45.0105671Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0105787Z               "line": 1174
2026-06-21T01:36:45.0105891Z             },
2026-06-21T01:36:45.0105986Z             {
2026-06-21T01:36:45.0106140Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0106258Z               "line": 1400
2026-06-21T01:36:45.0106358Z             }
2026-06-21T01:36:45.0106464Z           ]
2026-06-21T01:36:45.0106568Z         },
2026-06-21T01:36:45.0106678Z         "int": {
2026-06-21T01:36:45.0106793Z           "complete": false,
2026-06-21T01:36:45.0106902Z           "evidence": []
2026-06-21T01:36:45.0106998Z         },
2026-06-21T01:36:45.0107104Z         "unit": {
2026-06-21T01:36:45.0107225Z           "complete": true,
2026-06-21T01:36:45.0107330Z           "evidence": [
2026-06-21T01:36:45.0107430Z             {
2026-06-21T01:36:45.0107580Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T01:36:45.0107700Z               "line": 161
2026-06-21T01:36:45.0107801Z             }
2026-06-21T01:36:45.0107904Z           ]
2026-06-21T01:36:45.0108010Z         }
2026-06-21T01:36:45.0108115Z       }
2026-06-21T01:36:45.0108219Z     },
2026-06-21T01:36:45.0108320Z     {
2026-06-21T01:36:45.0108463Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T01:36:45.0110428Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T01:36:45.0110677Z       "requiredStages": [
2026-06-21T01:36:45.0110791Z         "impl",
2026-06-21T01:36:45.0110902Z         "unit"
2026-06-21T01:36:45.0111001Z       ],
2026-06-21T01:36:45.0111207Z       "stages": {
2026-06-21T01:36:45.0111315Z         "doc": {
2026-06-21T01:36:45.0111435Z           "complete": false,
2026-06-21T01:36:45.0111536Z           "evidence": []
2026-06-21T01:36:45.0111639Z         },
2026-06-21T01:36:45.0111749Z         "impl": {
2026-06-21T01:36:45.0111865Z           "complete": true,
2026-06-21T01:36:45.0111982Z           "evidence": [
2026-06-21T01:36:45.0112083Z             {
2026-06-21T01:36:45.0112236Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.0112340Z               "line": 257
2026-06-21T01:36:45.0112447Z             }
2026-06-21T01:36:45.0112542Z           ]
2026-06-21T01:36:45.0112640Z         },
2026-06-21T01:36:45.0112749Z         "int": {
2026-06-21T01:36:45.0112865Z           "complete": false,
2026-06-21T01:36:45.0112988Z           "evidence": []
2026-06-21T01:36:45.0113083Z         },
2026-06-21T01:36:45.0113194Z         "unit": {
2026-06-21T01:36:45.0113317Z           "complete": true,
2026-06-21T01:36:45.0113427Z           "evidence": [
2026-06-21T01:36:45.0113537Z             {
2026-06-21T01:36:45.0113679Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.0113794Z               "line": 360
2026-06-21T01:36:45.0113903Z             }
2026-06-21T01:36:45.0114003Z           ]
2026-06-21T01:36:45.0114105Z         }
2026-06-21T01:36:45.0114214Z       }
2026-06-21T01:36:45.0114313Z     },
2026-06-21T01:36:45.0114410Z     {
2026-06-21T01:36:45.0114552Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T01:36:45.0116475Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T01:36:45.0116613Z       "requiredStages": [
2026-06-21T01:36:45.0116719Z         "impl",
2026-06-21T01:36:45.0116828Z         "unit"
2026-06-21T01:36:45.0116933Z       ],
2026-06-21T01:36:45.0117029Z       "stages": {
2026-06-21T01:36:45.0117138Z         "doc": {
2026-06-21T01:36:45.0117258Z           "complete": false,
2026-06-21T01:36:45.0117372Z           "evidence": []
2026-06-21T01:36:45.0117481Z         },
2026-06-21T01:36:45.0117582Z         "impl": {
2026-06-21T01:36:45.0117706Z           "complete": true,
2026-06-21T01:36:45.0117819Z           "evidence": [
2026-06-21T01:36:45.0117919Z             {
2026-06-21T01:36:45.0118083Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.0118188Z               "line": 1018
2026-06-21T01:36:45.0118299Z             },
2026-06-21T01:36:45.0118398Z             {
2026-06-21T01:36:45.0118556Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0118670Z               "line": 283
2026-06-21T01:36:45.0118769Z             },
2026-06-21T01:36:45.0118876Z             {
2026-06-21T01:36:45.0119098Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0119204Z               "line": 316
2026-06-21T01:36:45.0119418Z             },
2026-06-21T01:36:45.0119524Z             {
2026-06-21T01:36:45.0119680Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T01:36:45.0119786Z               "line": 26
2026-06-21T01:36:45.0119887Z             }
2026-06-21T01:36:45.0119990Z           ]
2026-06-21T01:36:45.0120091Z         },
2026-06-21T01:36:45.0120192Z         "int": {
2026-06-21T01:36:45.0120300Z           "complete": false,
2026-06-21T01:36:45.0120423Z           "evidence": []
2026-06-21T01:36:45.0120519Z         },
2026-06-21T01:36:45.0120631Z         "unit": {
2026-06-21T01:36:45.0120740Z           "complete": true,
2026-06-21T01:36:45.0120955Z           "evidence": [
2026-06-21T01:36:45.0121059Z             {
2026-06-21T01:36:45.0121213Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T01:36:45.0121327Z               "line": 271
2026-06-21T01:36:45.0121432Z             },
2026-06-21T01:36:45.0121537Z             {
2026-06-21T01:36:45.0121684Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T01:36:45.0121795Z               "line": 348
2026-06-21T01:36:45.0121899Z             }
2026-06-21T01:36:45.0121999Z           ]
2026-06-21T01:36:45.0122101Z         }
2026-06-21T01:36:45.0122204Z       }
2026-06-21T01:36:45.0122304Z     },
2026-06-21T01:36:45.0122406Z     {
2026-06-21T01:36:45.0122542Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T01:36:45.0122759Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T01:36:45.0122881Z       "requiredStages": [
2026-06-21T01:36:45.0122992Z         "impl",
2026-06-21T01:36:45.0123097Z         "unit"
2026-06-21T01:36:45.0123214Z       ],
2026-06-21T01:36:45.0123314Z       "stages": {
2026-06-21T01:36:45.0123420Z         "doc": {
2026-06-21T01:36:45.0123529Z           "complete": false,
2026-06-21T01:36:45.0123643Z           "evidence": []
2026-06-21T01:36:45.0123754Z         },
2026-06-21T01:36:45.0123858Z         "impl": {
2026-06-21T01:36:45.0123977Z           "complete": true,
2026-06-21T01:36:45.0124087Z           "evidence": [
2026-06-21T01:36:45.0124187Z             {
2026-06-21T01:36:45.0124331Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0124445Z               "line": 40
2026-06-21T01:36:45.0124549Z             },
2026-06-21T01:36:45.0124641Z             {
2026-06-21T01:36:45.0124783Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0124892Z               "line": 103
2026-06-21T01:36:45.0125003Z             },
2026-06-21T01:36:45.0125102Z             {
2026-06-21T01:36:45.0125251Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0125351Z               "line": 218
2026-06-21T01:36:45.0125460Z             },
2026-06-21T01:36:45.0125559Z             {
2026-06-21T01:36:45.0125692Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0125800Z               "line": 323
2026-06-21T01:36:45.0125905Z             }
2026-06-21T01:36:45.0126011Z           ]
2026-06-21T01:36:45.0126120Z         },
2026-06-21T01:36:45.0126219Z         "int": {
2026-06-21T01:36:45.0126344Z           "complete": false,
2026-06-21T01:36:45.0126444Z           "evidence": []
2026-06-21T01:36:45.0126549Z         },
2026-06-21T01:36:45.0126649Z         "unit": {
2026-06-21T01:36:45.0126773Z           "complete": true,
2026-06-21T01:36:45.0126889Z           "evidence": [
2026-06-21T01:36:45.0126983Z             {
2026-06-21T01:36:45.0127120Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0127231Z               "line": 361
2026-06-21T01:36:45.0127340Z             },
2026-06-21T01:36:45.0127435Z             {
2026-06-21T01:36:45.0127580Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0127703Z               "line": 433
2026-06-21T01:36:45.0127813Z             },
2026-06-21T01:36:45.0127918Z             {
2026-06-21T01:36:45.0128056Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0128167Z               "line": 496
2026-06-21T01:36:45.0128369Z             },
2026-06-21T01:36:45.0128479Z             {
2026-06-21T01:36:45.0128625Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0128729Z               "line": 517
2026-06-21T01:36:45.0128829Z             }
2026-06-21T01:36:45.0128926Z           ]
2026-06-21T01:36:45.0129111Z         }
2026-06-21T01:36:45.0129216Z       }
2026-06-21T01:36:45.0129316Z     },
2026-06-21T01:36:45.0129426Z     {
2026-06-21T01:36:45.0129564Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T01:36:45.0132026Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T01:36:45.0132288Z       "requiredStages": [
2026-06-21T01:36:45.0132398Z         "impl",
2026-06-21T01:36:45.0132493Z         "unit"
2026-06-21T01:36:45.0132593Z       ],
2026-06-21T01:36:45.0132699Z       "stages": {
2026-06-21T01:36:45.0132808Z         "doc": {
2026-06-21T01:36:45.0132927Z           "complete": false,
2026-06-21T01:36:45.0133051Z           "evidence": []
2026-06-21T01:36:45.0133146Z         },
2026-06-21T01:36:45.0133252Z         "impl": {
2026-06-21T01:36:45.0133366Z           "complete": true,
2026-06-21T01:36:45.0133475Z           "evidence": [
2026-06-21T01:36:45.0133572Z             {
2026-06-21T01:36:45.0133727Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.0133841Z               "line": 402
2026-06-21T01:36:45.0133946Z             },
2026-06-21T01:36:45.0134052Z             {
2026-06-21T01:36:45.0134203Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.0134309Z               "line": 446
2026-06-21T01:36:45.0134413Z             }
2026-06-21T01:36:45.0134503Z           ]
2026-06-21T01:36:45.0134610Z         },
2026-06-21T01:36:45.0134714Z         "int": {
2026-06-21T01:36:45.0134833Z           "complete": false,
2026-06-21T01:36:45.0134934Z           "evidence": []
2026-06-21T01:36:45.0135038Z         },
2026-06-21T01:36:45.0135147Z         "unit": {
2026-06-21T01:36:45.0135267Z           "complete": true,
2026-06-21T01:36:45.0135367Z           "evidence": [
2026-06-21T01:36:45.0135467Z             {
2026-06-21T01:36:45.0135620Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.0135729Z               "line": 910
2026-06-21T01:36:45.0135826Z             }
2026-06-21T01:36:45.0135930Z           ]
2026-06-21T01:36:45.0136034Z         }
2026-06-21T01:36:45.0136143Z       }
2026-06-21T01:36:45.0136243Z     },
2026-06-21T01:36:45.0136341Z     {
2026-06-21T01:36:45.0136484Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T01:36:45.0136646Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T01:36:45.0136775Z       "requiredStages": [
2026-06-21T01:36:45.0136876Z         "impl",
2026-06-21T01:36:45.0136975Z         "unit"
2026-06-21T01:36:45.0137070Z       ],
2026-06-21T01:36:45.0137176Z       "stages": {
2026-06-21T01:36:45.0137280Z         "doc": {
2026-06-21T01:36:45.0137405Z           "complete": false,
2026-06-21T01:36:45.0137519Z           "evidence": []
2026-06-21T01:36:45.0137619Z         },
2026-06-21T01:36:45.0137724Z         "impl": {
2026-06-21T01:36:45.0137834Z           "complete": true,
2026-06-21T01:36:45.0137953Z           "evidence": [
2026-06-21T01:36:45.0138053Z             {
2026-06-21T01:36:45.0138196Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0138417Z               "line": 116
2026-06-21T01:36:45.0138525Z             },
2026-06-21T01:36:45.0138630Z             {
2026-06-21T01:36:45.0138774Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0138887Z               "line": 211
2026-06-21T01:36:45.0139063Z             }
2026-06-21T01:36:45.0139175Z           ]
2026-06-21T01:36:45.0139279Z         },
2026-06-21T01:36:45.0139380Z         "int": {
2026-06-21T01:36:45.0139495Z           "complete": false,
2026-06-21T01:36:45.0139599Z           "evidence": []
2026-06-21T01:36:45.0139705Z         },
2026-06-21T01:36:45.0139810Z         "unit": {
2026-06-21T01:36:45.0140034Z           "complete": true,
2026-06-21T01:36:45.0140144Z           "evidence": [
2026-06-21T01:36:45.0140247Z             {
2026-06-21T01:36:45.0140392Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0140501Z               "line": 388
2026-06-21T01:36:45.0140606Z             },
2026-06-21T01:36:45.0140716Z             {
2026-06-21T01:36:45.0140853Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0140969Z               "line": 469
2026-06-21T01:36:45.0141073Z             }
2026-06-21T01:36:45.0141182Z           ]
2026-06-21T01:36:45.0141284Z         }
2026-06-21T01:36:45.0141388Z       }
2026-06-21T01:36:45.0141486Z     },
2026-06-21T01:36:45.0141591Z     {
2026-06-21T01:36:45.0141747Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T01:36:45.0143024Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T01:36:45.0143162Z       "requiredStages": [
2026-06-21T01:36:45.0143268Z         "impl",
2026-06-21T01:36:45.0143378Z         "unit"
2026-06-21T01:36:45.0143487Z       ],
2026-06-21T01:36:45.0143588Z       "stages": {
2026-06-21T01:36:45.0143687Z         "doc": {
2026-06-21T01:36:45.0143797Z           "complete": true,
2026-06-21T01:36:45.0143908Z           "evidence": [
2026-06-21T01:36:45.0144011Z             {
2026-06-21T01:36:45.0144142Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0144260Z               "line": 206
2026-06-21T01:36:45.0144363Z             }
2026-06-21T01:36:45.0144468Z           ]
2026-06-21T01:36:45.0144569Z         },
2026-06-21T01:36:45.0144673Z         "impl": {
2026-06-21T01:36:45.0144783Z           "complete": true,
2026-06-21T01:36:45.0144897Z           "evidence": [
2026-06-21T01:36:45.0145006Z             {
2026-06-21T01:36:45.0145156Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0145261Z               "line": 691
2026-06-21T01:36:45.0145364Z             },
2026-06-21T01:36:45.0145475Z             {
2026-06-21T01:36:45.0145622Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0145742Z               "line": 791
2026-06-21T01:36:45.0145842Z             },
2026-06-21T01:36:45.0145946Z             {
2026-06-21T01:36:45.0146100Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0146213Z               "line": 1120
2026-06-21T01:36:45.0146323Z             },
2026-06-21T01:36:45.0146425Z             {
2026-06-21T01:36:45.0146584Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.0146708Z               "line": 184
2026-06-21T01:36:45.0146808Z             }
2026-06-21T01:36:45.0146901Z           ]
2026-06-21T01:36:45.0147001Z         },
2026-06-21T01:36:45.0147107Z         "int": {
2026-06-21T01:36:45.0147226Z           "complete": false,
2026-06-21T01:36:45.0147340Z           "evidence": []
2026-06-21T01:36:45.0147441Z         },
2026-06-21T01:36:45.0147545Z         "unit": {
2026-06-21T01:36:45.0147655Z           "complete": true,
2026-06-21T01:36:45.0147760Z           "evidence": [
2026-06-21T01:36:45.0147989Z             {
2026-06-21T01:36:45.0148137Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0148260Z               "line": 1169
2026-06-21T01:36:45.0148357Z             },
2026-06-21T01:36:45.0148456Z             {
2026-06-21T01:36:45.0148623Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T01:36:45.0148732Z               "line": 44
2026-06-21T01:36:45.0148837Z             },
2026-06-21T01:36:45.0149033Z             {
2026-06-21T01:36:45.0149195Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T01:36:45.0149306Z               "line": 52
2026-06-21T01:36:45.0149513Z             },
2026-06-21T01:36:45.0149623Z             {
2026-06-21T01:36:45.0149769Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T01:36:45.0149888Z               "line": 57
2026-06-21T01:36:45.0149984Z             },
2026-06-21T01:36:45.0150088Z             {
2026-06-21T01:36:45.0150261Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T01:36:45.0150365Z               "line": 54
2026-06-21T01:36:45.0150460Z             }
2026-06-21T01:36:45.0150561Z           ]
2026-06-21T01:36:45.0150670Z         }
2026-06-21T01:36:45.0150765Z       }
2026-06-21T01:36:45.0150870Z     },
2026-06-21T01:36:45.0150975Z     {
2026-06-21T01:36:45.0151122Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T01:36:45.0151380Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T01:36:45.0151490Z       "requiredStages": [
2026-06-21T01:36:45.0151596Z         "impl",
2026-06-21T01:36:45.0151699Z         "unit"
2026-06-21T01:36:45.0151815Z       ],
2026-06-21T01:36:45.0151925Z       "stages": {
2026-06-21T01:36:45.0152032Z         "doc": {
2026-06-21T01:36:45.0152156Z           "complete": false,
2026-06-21T01:36:45.0152260Z           "evidence": []
2026-06-21T01:36:45.0152368Z         },
2026-06-21T01:36:45.0152478Z         "impl": {
2026-06-21T01:36:45.0152603Z           "complete": true,
2026-06-21T01:36:45.0152721Z           "evidence": [
2026-06-21T01:36:45.0152808Z             {
2026-06-21T01:36:45.0152960Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0153069Z               "line": 26
2026-06-21T01:36:45.0153180Z             },
2026-06-21T01:36:45.0153275Z             {
2026-06-21T01:36:45.0153423Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0153542Z               "line": 135
2026-06-21T01:36:45.0153642Z             },
2026-06-21T01:36:45.0153747Z             {
2026-06-21T01:36:45.0153904Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:36:45.0154028Z               "line": 26
2026-06-21T01:36:45.0154134Z             },
2026-06-21T01:36:45.0154228Z             {
2026-06-21T01:36:45.0154387Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:36:45.0154496Z               "line": 237
2026-06-21T01:36:45.0154605Z             }
2026-06-21T01:36:45.0154706Z           ]
2026-06-21T01:36:45.0154811Z         },
2026-06-21T01:36:45.0154918Z         "int": {
2026-06-21T01:36:45.0155033Z           "complete": false,
2026-06-21T01:36:45.0155144Z           "evidence": []
2026-06-21T01:36:45.0155247Z         },
2026-06-21T01:36:45.0155353Z         "unit": {
2026-06-21T01:36:45.0155472Z           "complete": true,
2026-06-21T01:36:45.0155590Z           "evidence": [
2026-06-21T01:36:45.0155692Z             {
2026-06-21T01:36:45.0155835Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0155939Z               "line": 161
2026-06-21T01:36:45.0156040Z             },
2026-06-21T01:36:45.0156139Z             {
2026-06-21T01:36:45.0156287Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0156393Z               "line": 170
2026-06-21T01:36:45.0156506Z             },
2026-06-21T01:36:45.0156607Z             {
2026-06-21T01:36:45.0156750Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0156854Z               "line": 179
2026-06-21T01:36:45.0157074Z             },
2026-06-21T01:36:45.0157178Z             {
2026-06-21T01:36:45.0157330Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0157442Z               "line": 190
2026-06-21T01:36:45.0157537Z             },
2026-06-21T01:36:45.0157633Z             {
2026-06-21T01:36:45.0157776Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0157891Z               "line": 199
2026-06-21T01:36:45.0157996Z             },
2026-06-21T01:36:45.0158100Z             {
2026-06-21T01:36:45.0158244Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0158353Z               "line": 216
2026-06-21T01:36:45.0158549Z             },
2026-06-21T01:36:45.0158654Z             {
2026-06-21T01:36:45.0158801Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T01:36:45.0158912Z               "line": 242
2026-06-21T01:36:45.0159106Z             },
2026-06-21T01:36:45.0159208Z             {
2026-06-21T01:36:45.0159354Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0159469Z               "line": 295
2026-06-21T01:36:45.0159570Z             },
2026-06-21T01:36:45.0159678Z             {
2026-06-21T01:36:45.0159818Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0159932Z               "line": 244
2026-06-21T01:36:45.0160036Z             },
2026-06-21T01:36:45.0160136Z             {
2026-06-21T01:36:45.0160291Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:36:45.0160404Z               "line": 265
2026-06-21T01:36:45.0160510Z             },
2026-06-21T01:36:45.0160610Z             {
2026-06-21T01:36:45.0160772Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:36:45.0160887Z               "line": 293
2026-06-21T01:36:45.0160991Z             },
2026-06-21T01:36:45.0161097Z             {
2026-06-21T01:36:45.0161249Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:36:45.0161358Z               "line": 317
2026-06-21T01:36:45.0161460Z             },
2026-06-21T01:36:45.0161573Z             {
2026-06-21T01:36:45.0161726Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T01:36:45.0161831Z               "line": 327
2026-06-21T01:36:45.0161935Z             },
2026-06-21T01:36:45.0162041Z             {
2026-06-21T01:36:45.0162188Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.0162303Z               "line": 540
2026-06-21T01:36:45.0162404Z             }
2026-06-21T01:36:45.0162508Z           ]
2026-06-21T01:36:45.0162607Z         }
2026-06-21T01:36:45.0162716Z       }
2026-06-21T01:36:45.0162825Z     },
2026-06-21T01:36:45.0162928Z     {
2026-06-21T01:36:45.0163081Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T01:36:45.0168155Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T01:36:45.0168446Z       "requiredStages": [],
2026-06-21T01:36:45.0168566Z       "stages": {
2026-06-21T01:36:45.0168670Z         "doc": {
2026-06-21T01:36:45.0168790Z           "complete": false,
2026-06-21T01:36:45.0168894Z           "evidence": []
2026-06-21T01:36:45.0169186Z         },
2026-06-21T01:36:45.0169290Z         "impl": {
2026-06-21T01:36:45.0169404Z           "complete": false,
2026-06-21T01:36:45.0169520Z           "evidence": []
2026-06-21T01:36:45.0169628Z         },
2026-06-21T01:36:45.0169734Z         "int": {
2026-06-21T01:36:45.0169853Z           "complete": false,
2026-06-21T01:36:45.0169967Z           "evidence": []
2026-06-21T01:36:45.0170068Z         },
2026-06-21T01:36:45.0170173Z         "unit": {
2026-06-21T01:36:45.0170296Z           "complete": false,
2026-06-21T01:36:45.0170402Z           "evidence": []
2026-06-21T01:36:45.0170501Z         }
2026-06-21T01:36:45.0170610Z       }
2026-06-21T01:36:45.0170710Z     },
2026-06-21T01:36:45.0170814Z     {
2026-06-21T01:36:45.0170951Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T01:36:45.0172601Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T01:36:45.0172744Z       "requiredStages": [
2026-06-21T01:36:45.0172853Z         "impl",
2026-06-21T01:36:45.0172959Z         "unit",
2026-06-21T01:36:45.0173054Z         "int"
2026-06-21T01:36:45.0173158Z       ],
2026-06-21T01:36:45.0173262Z       "stages": {
2026-06-21T01:36:45.0173371Z         "doc": {
2026-06-21T01:36:45.0173494Z           "complete": false,
2026-06-21T01:36:45.0173608Z           "evidence": []
2026-06-21T01:36:45.0173714Z         },
2026-06-21T01:36:45.0173813Z         "impl": {
2026-06-21T01:36:45.0173928Z           "complete": true,
2026-06-21T01:36:45.0174038Z           "evidence": [
2026-06-21T01:36:45.0174147Z             {
2026-06-21T01:36:45.0174304Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0174409Z               "line": 538
2026-06-21T01:36:45.0174509Z             },
2026-06-21T01:36:45.0174615Z             {
2026-06-21T01:36:45.0174766Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:45.0174877Z               "line": 625
2026-06-21T01:36:45.0174982Z             },
2026-06-21T01:36:45.0175081Z             {
2026-06-21T01:36:45.0175263Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T01:36:45.0175377Z               "line": 21
2026-06-21T01:36:45.0175483Z             }
2026-06-21T01:36:45.0175583Z           ]
2026-06-21T01:36:45.0175696Z         },
2026-06-21T01:36:45.0175803Z         "int": {
2026-06-21T01:36:45.0175912Z           "complete": true,
2026-06-21T01:36:45.0176015Z           "evidence": [
2026-06-21T01:36:45.0176120Z             {
2026-06-21T01:36:45.0176297Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T01:36:45.0176415Z               "line": 236
2026-06-21T01:36:45.0176516Z             },
2026-06-21T01:36:45.0176617Z             {
2026-06-21T01:36:45.0176798Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T01:36:45.0176912Z               "line": 396
2026-06-21T01:36:45.0177127Z             },
2026-06-21T01:36:45.0177227Z             {
2026-06-21T01:36:45.0177398Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.0177513Z               "line": 1441
2026-06-21T01:36:45.0177618Z             },
2026-06-21T01:36:45.0177722Z             {
2026-06-21T01:36:45.0177898Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.0178018Z               "line": 1593
2026-06-21T01:36:45.0178119Z             }
2026-06-21T01:36:45.0178223Z           ]
2026-06-21T01:36:45.0178322Z         },
2026-06-21T01:36:45.0178426Z         "unit": {
2026-06-21T01:36:45.0178549Z           "complete": true,
2026-06-21T01:36:45.0178749Z           "evidence": [
2026-06-21T01:36:45.0178859Z             {
2026-06-21T01:36:45.0179103Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0179212Z               "line": 887
2026-06-21T01:36:45.0179316Z             }
2026-06-21T01:36:45.0179417Z           ]
2026-06-21T01:36:45.0179526Z         }
2026-06-21T01:36:45.0179626Z       }
2026-06-21T01:36:45.0179727Z     },
2026-06-21T01:36:45.0179832Z     {
2026-06-21T01:36:45.0179984Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T01:36:45.0180170Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T01:36:45.0180289Z       "requiredStages": [
2026-06-21T01:36:45.0180399Z         "impl",
2026-06-21T01:36:45.0180494Z         "unit"
2026-06-21T01:36:45.0180589Z       ],
2026-06-21T01:36:45.0180700Z       "stages": {
2026-06-21T01:36:45.0180803Z         "doc": {
2026-06-21T01:36:45.0180929Z           "complete": false,
2026-06-21T01:36:45.0181039Z           "evidence": []
2026-06-21T01:36:45.0181146Z         },
2026-06-21T01:36:45.0181246Z         "impl": {
2026-06-21T01:36:45.0183936Z           "complete": true,
2026-06-21T01:36:45.0184073Z           "evidence": [
2026-06-21T01:36:45.0184178Z             {
2026-06-21T01:36:45.0184335Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.0184459Z               "line": 25
2026-06-21T01:36:45.0184565Z             },
2026-06-21T01:36:45.0184668Z             {
2026-06-21T01:36:45.0184823Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0184932Z               "line": 26
2026-06-21T01:36:45.0185036Z             },
2026-06-21T01:36:45.0185137Z             {
2026-06-21T01:36:45.0185289Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0185398Z               "line": 159
2026-06-21T01:36:45.0185499Z             }
2026-06-21T01:36:45.0185603Z           ]
2026-06-21T01:36:45.0185698Z         },
2026-06-21T01:36:45.0185805Z         "int": {
2026-06-21T01:36:45.0185942Z           "complete": false,
2026-06-21T01:36:45.0186043Z           "evidence": []
2026-06-21T01:36:45.0186143Z         },
2026-06-21T01:36:45.0186247Z         "unit": {
2026-06-21T01:36:45.0186363Z           "complete": true,
2026-06-21T01:36:45.0186477Z           "evidence": [
2026-06-21T01:36:45.0186580Z             {
2026-06-21T01:36:45.0186728Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.0186829Z               "line": 188
2026-06-21T01:36:45.0186933Z             },
2026-06-21T01:36:45.0187038Z             {
2026-06-21T01:36:45.0187186Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.0187299Z               "line": 240
2026-06-21T01:36:45.0187396Z             },
2026-06-21T01:36:45.0187491Z             {
2026-06-21T01:36:45.0187639Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0187739Z               "line": 186
2026-06-21T01:36:45.0187844Z             }
2026-06-21T01:36:45.0187948Z           ]
2026-06-21T01:36:45.0188054Z         }
2026-06-21T01:36:45.0188158Z       }
2026-06-21T01:36:45.0188253Z     },
2026-06-21T01:36:45.0188355Z     {
2026-06-21T01:36:45.0188491Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T01:36:45.0188693Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T01:36:45.0189044Z       "requiredStages": [
2026-06-21T01:36:45.0189151Z         "impl",
2026-06-21T01:36:45.0189256Z         "unit"
2026-06-21T01:36:45.0189357Z       ],
2026-06-21T01:36:45.0189462Z       "stages": {
2026-06-21T01:36:45.0189566Z         "doc": {
2026-06-21T01:36:45.0189686Z           "complete": false,
2026-06-21T01:36:45.0189804Z           "evidence": []
2026-06-21T01:36:45.0189910Z         },
2026-06-21T01:36:45.0190015Z         "impl": {
2026-06-21T01:36:45.0190138Z           "complete": true,
2026-06-21T01:36:45.0190235Z           "evidence": [
2026-06-21T01:36:45.0190344Z             {
2026-06-21T01:36:45.0190491Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0190706Z               "line": 48
2026-06-21T01:36:45.0190806Z             },
2026-06-21T01:36:45.0190907Z             {
2026-06-21T01:36:45.0191054Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0191159Z               "line": 55
2026-06-21T01:36:45.0191260Z             },
2026-06-21T01:36:45.0191363Z             {
2026-06-21T01:36:45.0191518Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0191631Z               "line": 74
2026-06-21T01:36:45.0191735Z             },
2026-06-21T01:36:45.0191840Z             {
2026-06-21T01:36:45.0191986Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0192095Z               "line": 91
2026-06-21T01:36:45.0192195Z             }
2026-06-21T01:36:45.0192301Z           ]
2026-06-21T01:36:45.0192404Z         },
2026-06-21T01:36:45.0192515Z         "int": {
2026-06-21T01:36:45.0192639Z           "complete": false,
2026-06-21T01:36:45.0192753Z           "evidence": []
2026-06-21T01:36:45.0192859Z         },
2026-06-21T01:36:45.0192968Z         "unit": {
2026-06-21T01:36:45.0193091Z           "complete": true,
2026-06-21T01:36:45.0193197Z           "evidence": [
2026-06-21T01:36:45.0193301Z             {
2026-06-21T01:36:45.0193450Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0193573Z               "line": 149
2026-06-21T01:36:45.0193673Z             },
2026-06-21T01:36:45.0193774Z             {
2026-06-21T01:36:45.0193925Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0194041Z               "line": 166
2026-06-21T01:36:45.0194146Z             },
2026-06-21T01:36:45.0194249Z             {
2026-06-21T01:36:45.0194392Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0194510Z               "line": 176
2026-06-21T01:36:45.0194609Z             },
2026-06-21T01:36:45.0194709Z             {
2026-06-21T01:36:45.0194853Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0194962Z               "line": 194
2026-06-21T01:36:45.0195063Z             },
2026-06-21T01:36:45.0195168Z             {
2026-06-21T01:36:45.0195309Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0195425Z               "line": 207
2026-06-21T01:36:45.0195525Z             }
2026-06-21T01:36:45.0195629Z           ]
2026-06-21T01:36:45.0195731Z         }
2026-06-21T01:36:45.0195835Z       }
2026-06-21T01:36:45.0195930Z     },
2026-06-21T01:36:45.0196036Z     {
2026-06-21T01:36:45.0196178Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T01:36:45.0196407Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T01:36:45.0196535Z       "requiredStages": [
2026-06-21T01:36:45.0196632Z         "impl",
2026-06-21T01:36:45.0196741Z         "unit"
2026-06-21T01:36:45.0196841Z       ],
2026-06-21T01:36:45.0196951Z       "stages": {
2026-06-21T01:36:45.0197055Z         "doc": {
2026-06-21T01:36:45.0197174Z           "complete": false,
2026-06-21T01:36:45.0197298Z           "evidence": []
2026-06-21T01:36:45.0197408Z         },
2026-06-21T01:36:45.0197516Z         "impl": {
2026-06-21T01:36:45.0197622Z           "complete": true,
2026-06-21T01:36:45.0197741Z           "evidence": [
2026-06-21T01:36:45.0197836Z             {
2026-06-21T01:36:45.0197980Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0198199Z               "line": 466
2026-06-21T01:36:45.0198304Z             },
2026-06-21T01:36:45.0198413Z             {
2026-06-21T01:36:45.0198552Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0198661Z               "line": 26
2026-06-21T01:36:45.0198761Z             }
2026-06-21T01:36:45.0198862Z           ]
2026-06-21T01:36:45.0199033Z         },
2026-06-21T01:36:45.0199138Z         "int": {
2026-06-21T01:36:45.0199253Z           "complete": false,
2026-06-21T01:36:45.0199367Z           "evidence": []
2026-06-21T01:36:45.0199470Z         },
2026-06-21T01:36:45.0199575Z         "unit": {
2026-06-21T01:36:45.0199811Z           "complete": true,
2026-06-21T01:36:45.0199927Z           "evidence": [
2026-06-21T01:36:45.0200031Z             {
2026-06-21T01:36:45.0200170Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0200275Z               "line": 150
2026-06-21T01:36:45.0200383Z             },
2026-06-21T01:36:45.0200490Z             {
2026-06-21T01:36:45.0200627Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0200746Z               "line": 208
2026-06-21T01:36:45.0200842Z             }
2026-06-21T01:36:45.0200942Z           ]
2026-06-21T01:36:45.0201041Z         }
2026-06-21T01:36:45.0201148Z       }
2026-06-21T01:36:45.0201257Z     },
2026-06-21T01:36:45.0201356Z     {
2026-06-21T01:36:45.0201505Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T01:36:45.0211259Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T01:36:45.0211616Z       "requiredStages": [
2026-06-21T01:36:45.0211722Z         "impl",
2026-06-21T01:36:45.0211921Z         "unit",
2026-06-21T01:36:45.0212028Z         "int"
2026-06-21T01:36:45.0212131Z       ],
2026-06-21T01:36:45.0212241Z       "stages": {
2026-06-21T01:36:45.0212343Z         "doc": {
2026-06-21T01:36:45.0212470Z           "complete": false,
2026-06-21T01:36:45.0212580Z           "evidence": []
2026-06-21T01:36:45.0212690Z         },
2026-06-21T01:36:45.0212803Z         "impl": {
2026-06-21T01:36:45.0212917Z           "complete": true,
2026-06-21T01:36:45.0213036Z           "evidence": [
2026-06-21T01:36:45.0213139Z             {
2026-06-21T01:36:45.0213301Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0213411Z               "line": 99
2026-06-21T01:36:45.0213515Z             },
2026-06-21T01:36:45.0213621Z             {
2026-06-21T01:36:45.0213773Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0213887Z               "line": 201
2026-06-21T01:36:45.0213988Z             }
2026-06-21T01:36:45.0214093Z           ]
2026-06-21T01:36:45.0214193Z         },
2026-06-21T01:36:45.0214298Z         "int": {
2026-06-21T01:36:45.0214426Z           "complete": true,
2026-06-21T01:36:45.0214536Z           "evidence": [
2026-06-21T01:36:45.0214642Z             {
2026-06-21T01:36:45.0214832Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.0214957Z               "line": 682
2026-06-21T01:36:45.0215060Z             }
2026-06-21T01:36:45.0215157Z           ]
2026-06-21T01:36:45.0215257Z         },
2026-06-21T01:36:45.0215360Z         "unit": {
2026-06-21T01:36:45.0215478Z           "complete": true,
2026-06-21T01:36:45.0215584Z           "evidence": [
2026-06-21T01:36:45.0215687Z             {
2026-06-21T01:36:45.0215835Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0215945Z               "line": 517
2026-06-21T01:36:45.0216048Z             },
2026-06-21T01:36:45.0216154Z             {
2026-06-21T01:36:45.0216303Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0216416Z               "line": 576
2026-06-21T01:36:45.0216517Z             }
2026-06-21T01:36:45.0216622Z           ]
2026-06-21T01:36:45.0216721Z         }
2026-06-21T01:36:45.0216827Z       }
2026-06-21T01:36:45.0216926Z     },
2026-06-21T01:36:45.0217031Z     {
2026-06-21T01:36:45.0217185Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T01:36:45.0218603Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T01:36:45.0218723Z       "requiredStages": [
2026-06-21T01:36:45.0218828Z         "doc",
2026-06-21T01:36:45.0219019Z         "impl",
2026-06-21T01:36:45.0219124Z         "unit"
2026-06-21T01:36:45.0219233Z       ],
2026-06-21T01:36:45.0219338Z       "stages": {
2026-06-21T01:36:45.0219439Z         "doc": {
2026-06-21T01:36:45.0219561Z           "complete": true,
2026-06-21T01:36:45.0219673Z           "evidence": [
2026-06-21T01:36:45.0219772Z             {
2026-06-21T01:36:45.0219920Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0220138Z               "line": 214
2026-06-21T01:36:45.0220234Z             }
2026-06-21T01:36:45.0220336Z           ]
2026-06-21T01:36:45.0220439Z         },
2026-06-21T01:36:45.0220543Z         "impl": {
2026-06-21T01:36:45.0220667Z           "complete": true,
2026-06-21T01:36:45.0220784Z           "evidence": [
2026-06-21T01:36:45.0220888Z             {
2026-06-21T01:36:45.0221042Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0221147Z               "line": 56
2026-06-21T01:36:45.0221252Z             },
2026-06-21T01:36:45.0221343Z             {
2026-06-21T01:36:45.0221485Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0221690Z               "line": 580
2026-06-21T01:36:45.0221785Z             },
2026-06-21T01:36:45.0221886Z             {
2026-06-21T01:36:45.0222034Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0222148Z               "line": 36
2026-06-21T01:36:45.0222244Z             },
2026-06-21T01:36:45.0222358Z             {
2026-06-21T01:36:45.0222510Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0222621Z               "line": 59
2026-06-21T01:36:45.0222730Z             },
2026-06-21T01:36:45.0222825Z             {
2026-06-21T01:36:45.0222978Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0223092Z               "line": 83
2026-06-21T01:36:45.0223193Z             },
2026-06-21T01:36:45.0223297Z             {
2026-06-21T01:36:45.0223438Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0223544Z               "line": 140
2026-06-21T01:36:45.0223652Z             },
2026-06-21T01:36:45.0223755Z             {
2026-06-21T01:36:45.0223905Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0224019Z               "line": 159
2026-06-21T01:36:45.0224118Z             },
2026-06-21T01:36:45.0224219Z             {
2026-06-21T01:36:45.0224362Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0224467Z               "line": 384
2026-06-21T01:36:45.0224577Z             },
2026-06-21T01:36:45.0224671Z             {
2026-06-21T01:36:45.0224811Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0224925Z               "line": 535
2026-06-21T01:36:45.0225034Z             },
2026-06-21T01:36:45.0225140Z             {
2026-06-21T01:36:45.0225286Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0225392Z               "line": 581
2026-06-21T01:36:45.0225502Z             },
2026-06-21T01:36:45.0225601Z             {
2026-06-21T01:36:45.0225746Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0225869Z               "line": 300
2026-06-21T01:36:45.0225977Z             },
2026-06-21T01:36:45.0226077Z             {
2026-06-21T01:36:45.0226209Z               "path": "crates/spt/src/main.rs",
2026-06-21T01:36:45.0226308Z               "line": 42
2026-06-21T01:36:45.0226419Z             }
2026-06-21T01:36:45.0226524Z           ]
2026-06-21T01:36:45.0226623Z         },
2026-06-21T01:36:45.0226729Z         "int": {
2026-06-21T01:36:45.0226843Z           "complete": false,
2026-06-21T01:36:45.0226956Z           "evidence": []
2026-06-21T01:36:45.0227063Z         },
2026-06-21T01:36:45.0227167Z         "unit": {
2026-06-21T01:36:45.0227290Z           "complete": true,
2026-06-21T01:36:45.0227396Z           "evidence": [
2026-06-21T01:36:45.0227500Z             {
2026-06-21T01:36:45.0227653Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0227759Z               "line": 813
2026-06-21T01:36:45.0227864Z             },
2026-06-21T01:36:45.0227963Z             {
2026-06-21T01:36:45.0228111Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0228211Z               "line": 854
2026-06-21T01:36:45.0228318Z             },
2026-06-21T01:36:45.0228417Z             {
2026-06-21T01:36:45.0228569Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0228769Z               "line": 928
2026-06-21T01:36:45.0228873Z             }
2026-06-21T01:36:45.0229040Z           ]
2026-06-21T01:36:45.0229145Z         }
2026-06-21T01:36:45.0229244Z       }
2026-06-21T01:36:45.0229346Z     },
2026-06-21T01:36:45.0229446Z     {
2026-06-21T01:36:45.0229603Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T01:36:45.0234817Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T01:36:45.0235104Z       "requiredStages": [
2026-06-21T01:36:45.0235217Z         "impl",
2026-06-21T01:36:45.0235323Z         "unit",
2026-06-21T01:36:45.0235428Z         "int"
2026-06-21T01:36:45.0235537Z       ],
2026-06-21T01:36:45.0235632Z       "stages": {
2026-06-21T01:36:45.0235738Z         "doc": {
2026-06-21T01:36:45.0235847Z           "complete": false,
2026-06-21T01:36:45.0235967Z           "evidence": []
2026-06-21T01:36:45.0236077Z         },
2026-06-21T01:36:45.0236185Z         "impl": {
2026-06-21T01:36:45.0236306Z           "complete": true,
2026-06-21T01:36:45.0236424Z           "evidence": [
2026-06-21T01:36:45.0236532Z             {
2026-06-21T01:36:45.0236685Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0236793Z               "line": 106
2026-06-21T01:36:45.0236897Z             }
2026-06-21T01:36:45.0236998Z           ]
2026-06-21T01:36:45.0237098Z         },
2026-06-21T01:36:45.0237192Z         "int": {
2026-06-21T01:36:45.0237318Z           "complete": true,
2026-06-21T01:36:45.0237427Z           "evidence": [
2026-06-21T01:36:45.0237536Z             {
2026-06-21T01:36:45.0237704Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T01:36:45.0237808Z               "line": 296
2026-06-21T01:36:45.0237914Z             }
2026-06-21T01:36:45.0238014Z           ]
2026-06-21T01:36:45.0238118Z         },
2026-06-21T01:36:45.0238218Z         "unit": {
2026-06-21T01:36:45.0238333Z           "complete": true,
2026-06-21T01:36:45.0238447Z           "evidence": [
2026-06-21T01:36:45.0238548Z             {
2026-06-21T01:36:45.0238714Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0238824Z               "line": 464
2026-06-21T01:36:45.0238925Z             }
2026-06-21T01:36:45.0239101Z           ]
2026-06-21T01:36:45.0239202Z         }
2026-06-21T01:36:45.0239306Z       }
2026-06-21T01:36:45.0239409Z     },
2026-06-21T01:36:45.0239644Z     {
2026-06-21T01:36:45.0239766Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T01:36:45.0243350Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T01:36:45.0243616Z       "requiredStages": [
2026-06-21T01:36:45.0243727Z         "impl",
2026-06-21T01:36:45.0243830Z         "unit",
2026-06-21T01:36:45.0243936Z         "int"
2026-06-21T01:36:45.0244037Z       ],
2026-06-21T01:36:45.0244150Z       "stages": {
2026-06-21T01:36:45.0244246Z         "doc": {
2026-06-21T01:36:45.0244362Z           "complete": false,
2026-06-21T01:36:45.0244479Z           "evidence": []
2026-06-21T01:36:45.0244582Z         },
2026-06-21T01:36:45.0244688Z         "impl": {
2026-06-21T01:36:45.0244800Z           "complete": true,
2026-06-21T01:36:45.0244919Z           "evidence": [
2026-06-21T01:36:45.0245020Z             {
2026-06-21T01:36:45.0245191Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0245312Z               "line": 123
2026-06-21T01:36:45.0245416Z             },
2026-06-21T01:36:45.0245525Z             {
2026-06-21T01:36:45.0245664Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:36:45.0245768Z               "line": 134
2026-06-21T01:36:45.0245868Z             }
2026-06-21T01:36:45.0245974Z           ]
2026-06-21T01:36:45.0246074Z         },
2026-06-21T01:36:45.0246178Z         "int": {
2026-06-21T01:36:45.0246298Z           "complete": true,
2026-06-21T01:36:45.0246397Z           "evidence": [
2026-06-21T01:36:45.0246502Z             {
2026-06-21T01:36:45.0246655Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.0246784Z               "line": 312
2026-06-21T01:36:45.0246890Z             },
2026-06-21T01:36:45.0246994Z             {
2026-06-21T01:36:45.0247149Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.0247259Z               "line": 508
2026-06-21T01:36:45.0247353Z             }
2026-06-21T01:36:45.0247452Z           ]
2026-06-21T01:36:45.0247563Z         },
2026-06-21T01:36:45.0247672Z         "unit": {
2026-06-21T01:36:45.0247781Z           "complete": true,
2026-06-21T01:36:45.0247892Z           "evidence": [
2026-06-21T01:36:45.0247997Z             {
2026-06-21T01:36:45.0248159Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0248259Z               "line": 250
2026-06-21T01:36:45.0248368Z             }
2026-06-21T01:36:45.0248474Z           ]
2026-06-21T01:36:45.0248574Z         }
2026-06-21T01:36:45.0248673Z       }
2026-06-21T01:36:45.0248774Z     },
2026-06-21T01:36:45.0248879Z     {
2026-06-21T01:36:45.0249113Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T01:36:45.0250970Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T01:36:45.0251210Z       "requiredStages": [
2026-06-21T01:36:45.0251319Z         "impl",
2026-06-21T01:36:45.0251415Z         "unit"
2026-06-21T01:36:45.0251519Z       ],
2026-06-21T01:36:45.0251624Z       "stages": {
2026-06-21T01:36:45.0251739Z         "doc": {
2026-06-21T01:36:45.0251857Z           "complete": false,
2026-06-21T01:36:45.0252073Z           "evidence": []
2026-06-21T01:36:45.0252176Z         },
2026-06-21T01:36:45.0252290Z         "impl": {
2026-06-21T01:36:45.0252400Z           "complete": true,
2026-06-21T01:36:45.0252512Z           "evidence": [
2026-06-21T01:36:45.0252622Z             {
2026-06-21T01:36:45.0252780Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0252903Z               "line": 31
2026-06-21T01:36:45.0253004Z             }
2026-06-21T01:36:45.0253109Z           ]
2026-06-21T01:36:45.0253203Z         },
2026-06-21T01:36:45.0253300Z         "int": {
2026-06-21T01:36:45.0253424Z           "complete": false,
2026-06-21T01:36:45.0253537Z           "evidence": []
2026-06-21T01:36:45.0253638Z         },
2026-06-21T01:36:45.0253748Z         "unit": {
2026-06-21T01:36:45.0253871Z           "complete": true,
2026-06-21T01:36:45.0253991Z           "evidence": [
2026-06-21T01:36:45.0254086Z             {
2026-06-21T01:36:45.0254235Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0254344Z               "line": 181
2026-06-21T01:36:45.0254448Z             }
2026-06-21T01:36:45.0254550Z           ]
2026-06-21T01:36:45.0254654Z         }
2026-06-21T01:36:45.0254758Z       }
2026-06-21T01:36:45.0254859Z     },
2026-06-21T01:36:45.0254964Z     {
2026-06-21T01:36:45.0255124Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T01:36:45.0255314Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T01:36:45.0255427Z       "requiredStages": [
2026-06-21T01:36:45.0255527Z         "impl",
2026-06-21T01:36:45.0255638Z         "unit"
2026-06-21T01:36:45.0255737Z       ],
2026-06-21T01:36:45.0255842Z       "stages": {
2026-06-21T01:36:45.0255952Z         "doc": {
2026-06-21T01:36:45.0256070Z           "complete": false,
2026-06-21T01:36:45.0256181Z           "evidence": []
2026-06-21T01:36:45.0256286Z         },
2026-06-21T01:36:45.0256399Z         "impl": {
2026-06-21T01:36:45.0256510Z           "complete": true,
2026-06-21T01:36:45.0256634Z           "evidence": [
2026-06-21T01:36:45.0256729Z             {
2026-06-21T01:36:45.0256877Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0256982Z               "line": 49
2026-06-21T01:36:45.0257087Z             },
2026-06-21T01:36:45.0257197Z             {
2026-06-21T01:36:45.0257349Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0257460Z               "line": 81
2026-06-21T01:36:45.0257554Z             }
2026-06-21T01:36:45.0257662Z           ]
2026-06-21T01:36:45.0257757Z         },
2026-06-21T01:36:45.0257862Z         "int": {
2026-06-21T01:36:45.0257989Z           "complete": false,
2026-06-21T01:36:45.0258094Z           "evidence": []
2026-06-21T01:36:45.0258195Z         },
2026-06-21T01:36:45.0258294Z         "unit": {
2026-06-21T01:36:45.0258419Z           "complete": true,
2026-06-21T01:36:45.0258529Z           "evidence": [
2026-06-21T01:36:45.0258628Z             {
2026-06-21T01:36:45.0258776Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0258886Z               "line": 156
2026-06-21T01:36:45.0259068Z             },
2026-06-21T01:36:45.0259167Z             {
2026-06-21T01:36:45.0259314Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0259429Z               "line": 173
2026-06-21T01:36:45.0259644Z             },
2026-06-21T01:36:45.0259735Z             {
2026-06-21T01:36:45.0259887Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0260002Z               "line": 196
2026-06-21T01:36:45.0260111Z             }
2026-06-21T01:36:45.0260211Z           ]
2026-06-21T01:36:45.0260307Z         }
2026-06-21T01:36:45.0260407Z       }
2026-06-21T01:36:45.0260511Z     },
2026-06-21T01:36:45.0260611Z     {
2026-06-21T01:36:45.0260759Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T01:36:45.0260964Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T01:36:45.0261088Z       "requiredStages": [
2026-06-21T01:36:45.0261294Z         "impl",
2026-06-21T01:36:45.0261398Z         "unit"
2026-06-21T01:36:45.0261507Z       ],
2026-06-21T01:36:45.0261613Z       "stages": {
2026-06-21T01:36:45.0261722Z         "doc": {
2026-06-21T01:36:45.0261831Z           "complete": false,
2026-06-21T01:36:45.0261947Z           "evidence": []
2026-06-21T01:36:45.0262046Z         },
2026-06-21T01:36:45.0262155Z         "impl": {
2026-06-21T01:36:45.0262280Z           "complete": true,
2026-06-21T01:36:45.0262389Z           "evidence": [
2026-06-21T01:36:45.0262494Z             {
2026-06-21T01:36:45.0262647Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0262760Z               "line": 120
2026-06-21T01:36:45.0262865Z             }
2026-06-21T01:36:45.0262974Z           ]
2026-06-21T01:36:45.0263068Z         },
2026-06-21T01:36:45.0263177Z         "int": {
2026-06-21T01:36:45.0263292Z           "complete": false,
2026-06-21T01:36:45.0263397Z           "evidence": []
2026-06-21T01:36:45.0263506Z         },
2026-06-21T01:36:45.0263612Z         "unit": {
2026-06-21T01:36:45.0263730Z           "complete": true,
2026-06-21T01:36:45.0263846Z           "evidence": [
2026-06-21T01:36:45.0263945Z             {
2026-06-21T01:36:45.0264102Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0264213Z               "line": 212
2026-06-21T01:36:45.0264322Z             },
2026-06-21T01:36:45.0264422Z             {
2026-06-21T01:36:45.0264570Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0264684Z               "line": 221
2026-06-21T01:36:45.0264770Z             },
2026-06-21T01:36:45.0264876Z             {
2026-06-21T01:36:45.0265018Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0265129Z               "line": 229
2026-06-21T01:36:45.0265233Z             },
2026-06-21T01:36:45.0265342Z             {
2026-06-21T01:36:45.0265491Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0265604Z               "line": 239
2026-06-21T01:36:45.0265717Z             },
2026-06-21T01:36:45.0265823Z             {
2026-06-21T01:36:45.0265968Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T01:36:45.0266069Z               "line": 249
2026-06-21T01:36:45.0266178Z             }
2026-06-21T01:36:45.0266287Z           ]
2026-06-21T01:36:45.0266393Z         }
2026-06-21T01:36:45.0266493Z       }
2026-06-21T01:36:45.0266593Z     },
2026-06-21T01:36:45.0266698Z     {
2026-06-21T01:36:45.0266831Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T01:36:45.0267032Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T01:36:45.0267151Z       "requiredStages": [
2026-06-21T01:36:45.0267255Z         "impl",
2026-06-21T01:36:45.0267357Z         "unit"
2026-06-21T01:36:45.0267461Z       ],
2026-06-21T01:36:45.0267565Z       "stages": {
2026-06-21T01:36:45.0267672Z         "doc": {
2026-06-21T01:36:45.0267794Z           "complete": false,
2026-06-21T01:36:45.0267909Z           "evidence": []
2026-06-21T01:36:45.0268010Z         },
2026-06-21T01:36:45.0268119Z         "impl": {
2026-06-21T01:36:45.0268232Z           "complete": true,
2026-06-21T01:36:45.0268337Z           "evidence": [
2026-06-21T01:36:45.0268441Z             {
2026-06-21T01:36:45.0268591Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.0268783Z               "line": 14
2026-06-21T01:36:45.0268888Z             },
2026-06-21T01:36:45.0269079Z             {
2026-06-21T01:36:45.0269216Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.0269332Z               "line": 63
2026-06-21T01:36:45.0269432Z             }
2026-06-21T01:36:45.0269531Z           ]
2026-06-21T01:36:45.0269633Z         },
2026-06-21T01:36:45.0269736Z         "int": {
2026-06-21T01:36:45.0269860Z           "complete": false,
2026-06-21T01:36:45.0269981Z           "evidence": []
2026-06-21T01:36:45.0270080Z         },
2026-06-21T01:36:45.0270185Z         "unit": {
2026-06-21T01:36:45.0270300Z           "complete": true,
2026-06-21T01:36:45.0270509Z           "evidence": [
2026-06-21T01:36:45.0270615Z             {
2026-06-21T01:36:45.0270757Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.0270872Z               "line": 164
2026-06-21T01:36:45.0270972Z             },
2026-06-21T01:36:45.0271076Z             {
2026-06-21T01:36:45.0271219Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.0271324Z               "line": 198
2026-06-21T01:36:45.0271423Z             },
2026-06-21T01:36:45.0271533Z             {
2026-06-21T01:36:45.0271667Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.0271780Z               "line": 220
2026-06-21T01:36:45.0271887Z             }
2026-06-21T01:36:45.0271987Z           ]
2026-06-21T01:36:45.0272095Z         }
2026-06-21T01:36:45.0272192Z       }
2026-06-21T01:36:45.0272301Z     },
2026-06-21T01:36:45.0272401Z     {
2026-06-21T01:36:45.0272531Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T01:36:45.0273966Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T01:36:45.0274100Z       "requiredStages": [],
2026-06-21T01:36:45.0274210Z       "stages": {
2026-06-21T01:36:45.0274314Z         "doc": {
2026-06-21T01:36:45.0274434Z           "complete": true,
2026-06-21T01:36:45.0274539Z           "evidence": [
2026-06-21T01:36:45.0274643Z             {
2026-06-21T01:36:45.0274782Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0274887Z               "line": 165
2026-06-21T01:36:45.0274992Z             }
2026-06-21T01:36:45.0275087Z           ]
2026-06-21T01:36:45.0275192Z         },
2026-06-21T01:36:45.0275311Z         "impl": {
2026-06-21T01:36:45.0275422Z           "complete": false,
2026-06-21T01:36:45.0275535Z           "evidence": []
2026-06-21T01:36:45.0275641Z         },
2026-06-21T01:36:45.0275751Z         "int": {
2026-06-21T01:36:45.0275854Z           "complete": false,
2026-06-21T01:36:45.0275970Z           "evidence": []
2026-06-21T01:36:45.0276080Z         },
2026-06-21T01:36:45.0276183Z         "unit": {
2026-06-21T01:36:45.0276297Z           "complete": false,
2026-06-21T01:36:45.0276406Z           "evidence": []
2026-06-21T01:36:45.0276509Z         }
2026-06-21T01:36:45.0276609Z       }
2026-06-21T01:36:45.0276715Z     },
2026-06-21T01:36:45.0276824Z     {
2026-06-21T01:36:45.0276972Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T01:36:45.0277224Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T01:36:45.0277345Z       "requiredStages": [
2026-06-21T01:36:45.0277458Z         "impl",
2026-06-21T01:36:45.0277558Z         "unit"
2026-06-21T01:36:45.0277678Z       ],
2026-06-21T01:36:45.0277792Z       "stages": {
2026-06-21T01:36:45.0277892Z         "doc": {
2026-06-21T01:36:45.0278017Z           "complete": false,
2026-06-21T01:36:45.0278130Z           "evidence": []
2026-06-21T01:36:45.0278237Z         },
2026-06-21T01:36:45.0278341Z         "impl": {
2026-06-21T01:36:45.0278594Z           "complete": true,
2026-06-21T01:36:45.0278712Z           "evidence": [
2026-06-21T01:36:45.0278811Z             {
2026-06-21T01:36:45.0279034Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0279138Z               "line": 76
2026-06-21T01:36:45.0279238Z             },
2026-06-21T01:36:45.0279339Z             {
2026-06-21T01:36:45.0279491Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0279610Z               "line": 167
2026-06-21T01:36:45.0279701Z             },
2026-06-21T01:36:45.0279810Z             {
2026-06-21T01:36:45.0279944Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0280159Z               "line": 233
2026-06-21T01:36:45.0280268Z             },
2026-06-21T01:36:45.0280372Z             {
2026-06-21T01:36:45.0280512Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0280626Z               "line": 272
2026-06-21T01:36:45.0280731Z             }
2026-06-21T01:36:45.0280841Z           ]
2026-06-21T01:36:45.0280944Z         },
2026-06-21T01:36:45.0281050Z         "int": {
2026-06-21T01:36:45.0281171Z           "complete": false,
2026-06-21T01:36:45.0281288Z           "evidence": []
2026-06-21T01:36:45.0281389Z         },
2026-06-21T01:36:45.0281495Z         "unit": {
2026-06-21T01:36:45.0281612Z           "complete": true,
2026-06-21T01:36:45.0281726Z           "evidence": [
2026-06-21T01:36:45.0281822Z             {
2026-06-21T01:36:45.0281969Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0282074Z               "line": 321
2026-06-21T01:36:45.0282175Z             },
2026-06-21T01:36:45.0282274Z             {
2026-06-21T01:36:45.0282414Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0282528Z               "line": 329
2026-06-21T01:36:45.0282627Z             },
2026-06-21T01:36:45.0282728Z             {
2026-06-21T01:36:45.0282871Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0282989Z               "line": 356
2026-06-21T01:36:45.0286244Z             },
2026-06-21T01:36:45.0286376Z             {
2026-06-21T01:36:45.0286549Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0286668Z               "line": 395
2026-06-21T01:36:45.0286776Z             },
2026-06-21T01:36:45.0286881Z             {
2026-06-21T01:36:45.0287022Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0287131Z               "line": 406
2026-06-21T01:36:45.0287236Z             },
2026-06-21T01:36:45.0287342Z             {
2026-06-21T01:36:45.0287475Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0287585Z               "line": 418
2026-06-21T01:36:45.0287703Z             },
2026-06-21T01:36:45.0287804Z             {
2026-06-21T01:36:45.0287943Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T01:36:45.0288056Z               "line": 442
2026-06-21T01:36:45.0288162Z             }
2026-06-21T01:36:45.0288262Z           ]
2026-06-21T01:36:45.0288376Z         }
2026-06-21T01:36:45.0288472Z       }
2026-06-21T01:36:45.0288572Z     },
2026-06-21T01:36:45.0288672Z     {
2026-06-21T01:36:45.0288807Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T01:36:45.0289068Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T01:36:45.0289187Z       "requiredStages": [
2026-06-21T01:36:45.0289300Z         "impl",
2026-06-21T01:36:45.0289399Z         "int"
2026-06-21T01:36:45.0289495Z       ],
2026-06-21T01:36:45.0289603Z       "stages": {
2026-06-21T01:36:45.0289707Z         "doc": {
2026-06-21T01:36:45.0289823Z           "complete": false,
2026-06-21T01:36:45.0289932Z           "evidence": []
2026-06-21T01:36:45.0290036Z         },
2026-06-21T01:36:45.0290138Z         "impl": {
2026-06-21T01:36:45.0290256Z           "complete": true,
2026-06-21T01:36:45.0290365Z           "evidence": [
2026-06-21T01:36:45.0290466Z             {
2026-06-21T01:36:45.0290622Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0290866Z               "line": 22
2026-06-21T01:36:45.0290971Z             }
2026-06-21T01:36:45.0291072Z           ]
2026-06-21T01:36:45.0291176Z         },
2026-06-21T01:36:45.0291286Z         "int": {
2026-06-21T01:36:45.0291392Z           "complete": true,
2026-06-21T01:36:45.0291514Z           "evidence": [
2026-06-21T01:36:45.0291644Z             {
2026-06-21T01:36:45.0291806Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T01:36:45.0291920Z               "line": 18
2026-06-21T01:36:45.0292017Z             }
2026-06-21T01:36:45.0292125Z           ]
2026-06-21T01:36:45.0292220Z         },
2026-06-21T01:36:45.0292324Z         "unit": {
2026-06-21T01:36:45.0292543Z           "complete": false,
2026-06-21T01:36:45.0292653Z           "evidence": []
2026-06-21T01:36:45.0292759Z         }
2026-06-21T01:36:45.0292863Z       }
2026-06-21T01:36:45.0292969Z     },
2026-06-21T01:36:45.0293068Z     {
2026-06-21T01:36:45.0293216Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T01:36:45.0293450Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T01:36:45.0293579Z       "requiredStages": [
2026-06-21T01:36:45.0293689Z         "impl",
2026-06-21T01:36:45.0293774Z         "unit"
2026-06-21T01:36:45.0293879Z       ],
2026-06-21T01:36:45.0293985Z       "stages": {
2026-06-21T01:36:45.0294093Z         "doc": {
2026-06-21T01:36:45.0294213Z           "complete": false,
2026-06-21T01:36:45.0294328Z           "evidence": []
2026-06-21T01:36:45.0294426Z         },
2026-06-21T01:36:45.0294531Z         "impl": {
2026-06-21T01:36:45.0294645Z           "complete": true,
2026-06-21T01:36:45.0294753Z           "evidence": [
2026-06-21T01:36:45.0294872Z             {
2026-06-21T01:36:45.0295025Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0295138Z               "line": 465
2026-06-21T01:36:45.0295245Z             },
2026-06-21T01:36:45.0295349Z             {
2026-06-21T01:36:45.0295506Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0295621Z               "line": 27
2026-06-21T01:36:45.0295720Z             }
2026-06-21T01:36:45.0295826Z           ]
2026-06-21T01:36:45.0295931Z         },
2026-06-21T01:36:45.0296040Z         "int": {
2026-06-21T01:36:45.0296160Z           "complete": false,
2026-06-21T01:36:45.0296274Z           "evidence": []
2026-06-21T01:36:45.0296379Z         },
2026-06-21T01:36:45.0296490Z         "unit": {
2026-06-21T01:36:45.0296608Z           "complete": true,
2026-06-21T01:36:45.0296727Z           "evidence": [
2026-06-21T01:36:45.0296829Z             {
2026-06-21T01:36:45.0296975Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0297095Z               "line": 990
2026-06-21T01:36:45.0297200Z             },
2026-06-21T01:36:45.0297308Z             {
2026-06-21T01:36:45.0297456Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0297573Z               "line": 181
2026-06-21T01:36:45.0297676Z             }
2026-06-21T01:36:45.0297783Z           ]
2026-06-21T01:36:45.0297888Z         }
2026-06-21T01:36:45.0297987Z       }
2026-06-21T01:36:45.0298093Z     },
2026-06-21T01:36:45.0298193Z     {
2026-06-21T01:36:45.0298334Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T01:36:45.0298536Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T01:36:45.0298645Z       "requiredStages": [
2026-06-21T01:36:45.0298756Z         "impl",
2026-06-21T01:36:45.0298855Z         "unit"
2026-06-21T01:36:45.0299022Z       ],
2026-06-21T01:36:45.0299127Z       "stages": {
2026-06-21T01:36:45.0299236Z         "doc": {
2026-06-21T01:36:45.0299362Z           "complete": false,
2026-06-21T01:36:45.0299484Z           "evidence": []
2026-06-21T01:36:45.0299580Z         },
2026-06-21T01:36:45.0299676Z         "impl": {
2026-06-21T01:36:45.0299790Z           "complete": true,
2026-06-21T01:36:45.0299898Z           "evidence": [
2026-06-21T01:36:45.0300003Z             {
2026-06-21T01:36:45.0300154Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.0300368Z               "line": 73
2026-06-21T01:36:45.0300473Z             },
2026-06-21T01:36:45.0300577Z             {
2026-06-21T01:36:45.0300727Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.0300840Z               "line": 972
2026-06-21T01:36:45.0300935Z             },
2026-06-21T01:36:45.0301036Z             {
2026-06-21T01:36:45.0301178Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0301294Z               "line": 20
2026-06-21T01:36:45.0301398Z             },
2026-06-21T01:36:45.0301498Z             {
2026-06-21T01:36:45.0301637Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0301846Z               "line": 100
2026-06-21T01:36:45.0301942Z             },
2026-06-21T01:36:45.0302051Z             {
2026-06-21T01:36:45.0302204Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:45.0302310Z               "line": 603
2026-06-21T01:36:45.0302413Z             },
2026-06-21T01:36:45.0302514Z             {
2026-06-21T01:36:45.0302676Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:36:45.0302784Z               "line": 68
2026-06-21T01:36:45.0302890Z             },
2026-06-21T01:36:45.0302996Z             {
2026-06-21T01:36:45.0303142Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:36:45.0303262Z               "line": 80
2026-06-21T01:36:45.0303367Z             }
2026-06-21T01:36:45.0303471Z           ]
2026-06-21T01:36:45.0303577Z         },
2026-06-21T01:36:45.0303682Z         "int": {
2026-06-21T01:36:45.0303790Z           "complete": true,
2026-06-21T01:36:45.0303901Z           "evidence": [
2026-06-21T01:36:45.0304010Z             {
2026-06-21T01:36:45.0304154Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T01:36:45.0304254Z               "line": 44
2026-06-21T01:36:45.0304362Z             }
2026-06-21T01:36:45.0304464Z           ]
2026-06-21T01:36:45.0304564Z         },
2026-06-21T01:36:45.0304663Z         "unit": {
2026-06-21T01:36:45.0304783Z           "complete": true,
2026-06-21T01:36:45.0304897Z           "evidence": [
2026-06-21T01:36:45.0305001Z             {
2026-06-21T01:36:45.0305148Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.0305256Z               "line": 1181
2026-06-21T01:36:45.0305370Z             },
2026-06-21T01:36:45.0305471Z             {
2026-06-21T01:36:45.0305618Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.0305737Z               "line": 1197
2026-06-21T01:36:45.0305838Z             },
2026-06-21T01:36:45.0305947Z             {
2026-06-21T01:36:45.0306096Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0306220Z               "line": 2246
2026-06-21T01:36:45.0306324Z             },
2026-06-21T01:36:45.0306435Z             {
2026-06-21T01:36:45.0306581Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0306701Z               "line": 152
2026-06-21T01:36:45.0306810Z             },
2026-06-21T01:36:45.0306901Z             {
2026-06-21T01:36:45.0307045Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0307144Z               "line": 175
2026-06-21T01:36:45.0307253Z             },
2026-06-21T01:36:45.0307360Z             {
2026-06-21T01:36:45.0307496Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0307602Z               "line": 186
2026-06-21T01:36:45.0307694Z             },
2026-06-21T01:36:45.0307797Z             {
2026-06-21T01:36:45.0307934Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0308049Z               "line": 202
2026-06-21T01:36:45.0308161Z             },
2026-06-21T01:36:45.0308265Z             {
2026-06-21T01:36:45.0308415Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T01:36:45.0308518Z               "line": 216
2026-06-21T01:36:45.0308619Z             },
2026-06-21T01:36:45.0308724Z             {
2026-06-21T01:36:45.0309020Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T01:36:45.0309138Z               "line": 137
2026-06-21T01:36:45.0309239Z             },
2026-06-21T01:36:45.0309344Z             {
2026-06-21T01:36:45.0309477Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0309597Z               "line": 8152
2026-06-21T01:36:45.0309697Z             },
2026-06-21T01:36:45.0309801Z             {
2026-06-21T01:36:45.0309941Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T01:36:45.0310044Z               "line": 30
2026-06-21T01:36:45.0310145Z             },
2026-06-21T01:36:45.0310251Z             {
2026-06-21T01:36:45.0310525Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T01:36:45.0310639Z               "line": 73
2026-06-21T01:36:45.0310742Z             }
2026-06-21T01:36:45.0310847Z           ]
2026-06-21T01:36:45.0310948Z         }
2026-06-21T01:36:45.0311062Z       }
2026-06-21T01:36:45.0311147Z     },
2026-06-21T01:36:45.0311239Z     {
2026-06-21T01:36:45.0311395Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T01:36:45.0315766Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T01:36:45.0315944Z       "requiredStages": [
2026-06-21T01:36:45.0316050Z         "impl",
2026-06-21T01:36:45.0316155Z         "unit",
2026-06-21T01:36:45.0316254Z         "int"
2026-06-21T01:36:45.0316365Z       ],
2026-06-21T01:36:45.0316474Z       "stages": {
2026-06-21T01:36:45.0316579Z         "doc": {
2026-06-21T01:36:45.0316704Z           "complete": false,
2026-06-21T01:36:45.0316817Z           "evidence": []
2026-06-21T01:36:45.0316927Z         },
2026-06-21T01:36:45.0317028Z         "impl": {
2026-06-21T01:36:45.0317146Z           "complete": true,
2026-06-21T01:36:45.0317261Z           "evidence": [
2026-06-21T01:36:45.0317362Z             {
2026-06-21T01:36:45.0317523Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0317634Z               "line": 510
2026-06-21T01:36:45.0317737Z             },
2026-06-21T01:36:45.0317837Z             {
2026-06-21T01:36:45.0317996Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0318095Z               "line": 704
2026-06-21T01:36:45.0318201Z             }
2026-06-21T01:36:45.0318306Z           ]
2026-06-21T01:36:45.0318404Z         },
2026-06-21T01:36:45.0318518Z         "int": {
2026-06-21T01:36:45.0318633Z           "complete": true,
2026-06-21T01:36:45.0318750Z           "evidence": [
2026-06-21T01:36:45.0318850Z             {
2026-06-21T01:36:45.0319078Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0319193Z               "line": 1119
2026-06-21T01:36:45.0319298Z             },
2026-06-21T01:36:45.0319403Z             {
2026-06-21T01:36:45.0319666Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T01:36:45.0319794Z               "line": 312
2026-06-21T01:36:45.0319900Z             }
2026-06-21T01:36:45.0320004Z           ]
2026-06-21T01:36:45.0320104Z         },
2026-06-21T01:36:45.0320196Z         "unit": {
2026-06-21T01:36:45.0320313Z           "complete": true,
2026-06-21T01:36:45.0320423Z           "evidence": [
2026-06-21T01:36:45.0320530Z             {
2026-06-21T01:36:45.0320676Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0320796Z               "line": 821
2026-06-21T01:36:45.0320905Z             }
2026-06-21T01:36:45.0321109Z           ]
2026-06-21T01:36:45.0321213Z         }
2026-06-21T01:36:45.0321317Z       }
2026-06-21T01:36:45.0321412Z     },
2026-06-21T01:36:45.0321503Z     {
2026-06-21T01:36:45.0321631Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T01:36:45.0321927Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T01:36:45.0322046Z       "requiredStages": [
2026-06-21T01:36:45.0322156Z         "impl",
2026-06-21T01:36:45.0322261Z         "unit"
2026-06-21T01:36:45.0322366Z       ],
2026-06-21T01:36:45.0322466Z       "stages": {
2026-06-21T01:36:45.0322576Z         "doc": {
2026-06-21T01:36:45.0322700Z           "complete": true,
2026-06-21T01:36:45.0322809Z           "evidence": [
2026-06-21T01:36:45.0322914Z             {
2026-06-21T01:36:45.0323049Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0323147Z               "line": 133
2026-06-21T01:36:45.0323248Z             }
2026-06-21T01:36:45.0323354Z           ]
2026-06-21T01:36:45.0323458Z         },
2026-06-21T01:36:45.0323563Z         "impl": {
2026-06-21T01:36:45.0323683Z           "complete": true,
2026-06-21T01:36:45.0323791Z           "evidence": [
2026-06-21T01:36:45.0323895Z             {
2026-06-21T01:36:45.0324029Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.0324134Z               "line": 65
2026-06-21T01:36:45.0324243Z             },
2026-06-21T01:36:45.0324330Z             {
2026-06-21T01:36:45.0324473Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0324572Z               "line": 17
2026-06-21T01:36:45.0324683Z             },
2026-06-21T01:36:45.0324783Z             {
2026-06-21T01:36:45.0324944Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:45.0325059Z               "line": 146
2026-06-21T01:36:45.0325163Z             },
2026-06-21T01:36:45.0325269Z             {
2026-06-21T01:36:45.0325416Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0325521Z               "line": 310
2026-06-21T01:36:45.0325632Z             },
2026-06-21T01:36:45.0325731Z             {
2026-06-21T01:36:45.0325874Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0325989Z               "line": 441
2026-06-21T01:36:45.0326097Z             },
2026-06-21T01:36:45.0326201Z             {
2026-06-21T01:36:45.0326335Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0326443Z               "line": 32
2026-06-21T01:36:45.0326548Z             },
2026-06-21T01:36:45.0326653Z             {
2026-06-21T01:36:45.0326790Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0326910Z               "line": 1283
2026-06-21T01:36:45.0327006Z             },
2026-06-21T01:36:45.0327115Z             {
2026-06-21T01:36:45.0327250Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0327359Z               "line": 6161
2026-06-21T01:36:45.0327468Z             },
2026-06-21T01:36:45.0327569Z             {
2026-06-21T01:36:45.0327711Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0327831Z               "line": 6443
2026-06-21T01:36:45.0327936Z             }
2026-06-21T01:36:45.0328036Z           ]
2026-06-21T01:36:45.0328136Z         },
2026-06-21T01:36:45.0328246Z         "int": {
2026-06-21T01:36:45.0328364Z           "complete": false,
2026-06-21T01:36:45.0328561Z           "evidence": []
2026-06-21T01:36:45.0328665Z         },
2026-06-21T01:36:45.0328766Z         "unit": {
2026-06-21T01:36:45.0328890Z           "complete": true,
2026-06-21T01:36:45.0329083Z           "evidence": [
2026-06-21T01:36:45.0329184Z             {
2026-06-21T01:36:45.0329324Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0329444Z               "line": 94
2026-06-21T01:36:45.0329544Z             },
2026-06-21T01:36:45.0329648Z             {
2026-06-21T01:36:45.0329793Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0329902Z               "line": 111
2026-06-21T01:36:45.0329996Z             },
2026-06-21T01:36:45.0330207Z             {
2026-06-21T01:36:45.0330349Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0330465Z               "line": 124
2026-06-21T01:36:45.0330569Z             },
2026-06-21T01:36:45.0330678Z             {
2026-06-21T01:36:45.0330812Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0330936Z               "line": 134
2026-06-21T01:36:45.0331037Z             },
2026-06-21T01:36:45.0331137Z             {
2026-06-21T01:36:45.0331275Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0331381Z               "line": 144
2026-06-21T01:36:45.0331484Z             },
2026-06-21T01:36:45.0331584Z             {
2026-06-21T01:36:45.0331722Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T01:36:45.0331834Z               "line": 156
2026-06-21T01:36:45.0331933Z             },
2026-06-21T01:36:45.0332034Z             {
2026-06-21T01:36:45.0332201Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0332320Z               "line": 746
2026-06-21T01:36:45.0332421Z             },
2026-06-21T01:36:45.0332530Z             {
2026-06-21T01:36:45.0332684Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:45.0332802Z               "line": 309
2026-06-21T01:36:45.0332897Z             }
2026-06-21T01:36:45.0333008Z           ]
2026-06-21T01:36:45.0333117Z         }
2026-06-21T01:36:45.0333216Z       }
2026-06-21T01:36:45.0333318Z     },
2026-06-21T01:36:45.0333417Z     {
2026-06-21T01:36:45.0333560Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T01:36:45.0333717Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T01:36:45.0333841Z       "requiredStages": [
2026-06-21T01:36:45.0333943Z         "impl",
2026-06-21T01:36:45.0334055Z         "unit"
2026-06-21T01:36:45.0334151Z       ],
2026-06-21T01:36:45.0334262Z       "stages": {
2026-06-21T01:36:45.0334361Z         "doc": {
2026-06-21T01:36:45.0334478Z           "complete": false,
2026-06-21T01:36:45.0334599Z           "evidence": []
2026-06-21T01:36:45.0334704Z         },
2026-06-21T01:36:45.0334807Z         "impl": {
2026-06-21T01:36:45.0334933Z           "complete": true,
2026-06-21T01:36:45.0335042Z           "evidence": [
2026-06-21T01:36:45.0335151Z             {
2026-06-21T01:36:45.0335285Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.0335404Z               "line": 128
2026-06-21T01:36:45.0335514Z             }
2026-06-21T01:36:45.0335619Z           ]
2026-06-21T01:36:45.0335728Z         },
2026-06-21T01:36:45.0335834Z         "int": {
2026-06-21T01:36:45.0335957Z           "complete": false,
2026-06-21T01:36:45.0336072Z           "evidence": []
2026-06-21T01:36:45.0336169Z         },
2026-06-21T01:36:45.0336282Z         "unit": {
2026-06-21T01:36:45.0336391Z           "complete": true,
2026-06-21T01:36:45.0336498Z           "evidence": [
2026-06-21T01:36:45.0336601Z             {
2026-06-21T01:36:45.0336752Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.0336876Z               "line": 205
2026-06-21T01:36:45.0336984Z             }
2026-06-21T01:36:45.0337088Z           ]
2026-06-21T01:36:45.0337190Z         }
2026-06-21T01:36:45.0337294Z       }
2026-06-21T01:36:45.0337399Z     },
2026-06-21T01:36:45.0337495Z     {
2026-06-21T01:36:45.0337642Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T01:36:45.0337937Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T01:36:45.0338067Z       "requiredStages": [
2026-06-21T01:36:45.0338172Z         "impl",
2026-06-21T01:36:45.0338276Z         "unit"
2026-06-21T01:36:45.0338376Z       ],
2026-06-21T01:36:45.0338500Z       "stages": {
2026-06-21T01:36:45.0338601Z         "doc": {
2026-06-21T01:36:45.0338726Z           "complete": false,
2026-06-21T01:36:45.0338844Z           "evidence": []
2026-06-21T01:36:45.0339026Z         },
2026-06-21T01:36:45.0339130Z         "impl": {
2026-06-21T01:36:45.0339240Z           "complete": true,
2026-06-21T01:36:45.0339355Z           "evidence": [
2026-06-21T01:36:45.0339562Z             {
2026-06-21T01:36:45.0339705Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0339814Z               "line": 367
2026-06-21T01:36:45.0339917Z             },
2026-06-21T01:36:45.0340018Z             {
2026-06-21T01:36:45.0340166Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0340280Z               "line": 378
2026-06-21T01:36:45.0340381Z             },
2026-06-21T01:36:45.0340486Z             {
2026-06-21T01:36:45.0340619Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0340720Z               "line": 396
2026-06-21T01:36:45.0340824Z             }
2026-06-21T01:36:45.0340924Z           ]
2026-06-21T01:36:45.0341030Z         },
2026-06-21T01:36:45.0341134Z         "int": {
2026-06-21T01:36:45.0341253Z           "complete": false,
2026-06-21T01:36:45.0341364Z           "evidence": []
2026-06-21T01:36:45.0341463Z         },
2026-06-21T01:36:45.0341578Z         "unit": {
2026-06-21T01:36:45.0341702Z           "complete": true,
2026-06-21T01:36:45.0341811Z           "evidence": [
2026-06-21T01:36:45.0341908Z             {
2026-06-21T01:36:45.0342044Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0342158Z               "line": 420
2026-06-21T01:36:45.0342267Z             },
2026-06-21T01:36:45.0342380Z             {
2026-06-21T01:36:45.0342512Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0342623Z               "line": 441
2026-06-21T01:36:45.0342728Z             },
2026-06-21T01:36:45.0342832Z             {
2026-06-21T01:36:45.0342967Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0343075Z               "line": 811
2026-06-21T01:36:45.0343176Z             },
2026-06-21T01:36:45.0343281Z             {
2026-06-21T01:36:45.0343419Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0343525Z               "line": 822
2026-06-21T01:36:45.0343629Z             },
2026-06-21T01:36:45.0343733Z             {
2026-06-21T01:36:45.0343873Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0343977Z               "line": 835
2026-06-21T01:36:45.0344082Z             }
2026-06-21T01:36:45.0344193Z           ]
2026-06-21T01:36:45.0344291Z         }
2026-06-21T01:36:45.0344397Z       }
2026-06-21T01:36:45.0344498Z     },
2026-06-21T01:36:45.0344601Z     {
2026-06-21T01:36:45.0344745Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T01:36:45.0352732Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T01:36:45.0353154Z       "requiredStages": [
2026-06-21T01:36:45.0353256Z         "impl",
2026-06-21T01:36:45.0353373Z         "unit",
2026-06-21T01:36:45.0353480Z         "int"
2026-06-21T01:36:45.0353575Z       ],
2026-06-21T01:36:45.0353683Z       "stages": {
2026-06-21T01:36:45.0353789Z         "doc": {
2026-06-21T01:36:45.0353918Z           "complete": false,
2026-06-21T01:36:45.0354031Z           "evidence": []
2026-06-21T01:36:45.0354142Z         },
2026-06-21T01:36:45.0354251Z         "impl": {
2026-06-21T01:36:45.0354375Z           "complete": true,
2026-06-21T01:36:45.0354481Z           "evidence": [
2026-06-21T01:36:45.0354585Z             {
2026-06-21T01:36:45.0354738Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0354851Z               "line": 300
2026-06-21T01:36:45.0354947Z             },
2026-06-21T01:36:45.0355048Z             {
2026-06-21T01:36:45.0355199Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0355305Z               "line": 714
2026-06-21T01:36:45.0355406Z             },
2026-06-21T01:36:45.0355509Z             {
2026-06-21T01:36:45.0355657Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0355772Z               "line": 978
2026-06-21T01:36:45.0355876Z             }
2026-06-21T01:36:45.0355981Z           ]
2026-06-21T01:36:45.0356091Z         },
2026-06-21T01:36:45.0356195Z         "int": {
2026-06-21T01:36:45.0356315Z           "complete": true,
2026-06-21T01:36:45.0356434Z           "evidence": [
2026-06-21T01:36:45.0356543Z             {
2026-06-21T01:36:45.0356725Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.0356843Z               "line": 222
2026-06-21T01:36:45.0356949Z             },
2026-06-21T01:36:45.0357049Z             {
2026-06-21T01:36:45.0357225Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.0357332Z               "line": 348
2026-06-21T01:36:45.0357430Z             }
2026-06-21T01:36:45.0357531Z           ]
2026-06-21T01:36:45.0357637Z         },
2026-06-21T01:36:45.0357740Z         "unit": {
2026-06-21T01:36:45.0357863Z           "complete": true,
2026-06-21T01:36:45.0357973Z           "evidence": [
2026-06-21T01:36:45.0358076Z             {
2026-06-21T01:36:45.0358219Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0358334Z               "line": 2274
2026-06-21T01:36:45.0358433Z             },
2026-06-21T01:36:45.0358615Z             {
2026-06-21T01:36:45.0358767Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0358892Z               "line": 2332
2026-06-21T01:36:45.0359057Z             }
2026-06-21T01:36:45.0359163Z           ]
2026-06-21T01:36:45.0359259Z         }
2026-06-21T01:36:45.0359358Z       }
2026-06-21T01:36:45.0359463Z     },
2026-06-21T01:36:45.0359564Z     {
2026-06-21T01:36:45.0359740Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T01:36:45.0367413Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T01:36:45.0367733Z       "requiredStages": [
2026-06-21T01:36:45.0367830Z         "doc",
2026-06-21T01:36:45.0367938Z         "impl",
2026-06-21T01:36:45.0368043Z         "unit",
2026-06-21T01:36:45.0368149Z         "int"
2026-06-21T01:36:45.0368253Z       ],
2026-06-21T01:36:45.0368362Z       "stages": {
2026-06-21T01:36:45.0368462Z         "doc": {
2026-06-21T01:36:45.0368580Z           "complete": true,
2026-06-21T01:36:45.0368703Z           "evidence": [
2026-06-21T01:36:45.0368802Z             {
2026-06-21T01:36:45.0369036Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0369141Z               "line": 454
2026-06-21T01:36:45.0369242Z             }
2026-06-21T01:36:45.0369346Z           ]
2026-06-21T01:36:45.0369442Z         },
2026-06-21T01:36:45.0369561Z         "impl": {
2026-06-21T01:36:45.0369675Z           "complete": true,
2026-06-21T01:36:45.0369796Z           "evidence": [
2026-06-21T01:36:45.0369881Z             {
2026-06-21T01:36:45.0370028Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0370139Z               "line": 203
2026-06-21T01:36:45.0370342Z             },
2026-06-21T01:36:45.0370453Z             {
2026-06-21T01:36:45.0370591Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0370697Z               "line": 487
2026-06-21T01:36:45.0370801Z             },
2026-06-21T01:36:45.0370910Z             {
2026-06-21T01:36:45.0371055Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0371158Z               "line": 1688
2026-06-21T01:36:45.0371262Z             },
2026-06-21T01:36:45.0371367Z             {
2026-06-21T01:36:45.0371517Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:45.0371631Z               "line": 331
2026-06-21T01:36:45.0371832Z             }
2026-06-21T01:36:45.0371936Z           ]
2026-06-21T01:36:45.0372042Z         },
2026-06-21T01:36:45.0372142Z         "int": {
2026-06-21T01:36:45.0372260Z           "complete": true,
2026-06-21T01:36:45.0372366Z           "evidence": [
2026-06-21T01:36:45.0372476Z             {
2026-06-21T01:36:45.0372633Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.0372757Z               "line": 720
2026-06-21T01:36:45.0372862Z             },
2026-06-21T01:36:45.0372968Z             {
2026-06-21T01:36:45.0373119Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.0373224Z               "line": 837
2026-06-21T01:36:45.0373325Z             },
2026-06-21T01:36:45.0373429Z             {
2026-06-21T01:36:45.0373607Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T01:36:45.0373706Z               "line": 266
2026-06-21T01:36:45.0373809Z             }
2026-06-21T01:36:45.0373910Z           ]
2026-06-21T01:36:45.0374019Z         },
2026-06-21T01:36:45.0374117Z         "unit": {
2026-06-21T01:36:45.0374227Z           "complete": true,
2026-06-21T01:36:45.0374342Z           "evidence": [
2026-06-21T01:36:45.0374446Z             {
2026-06-21T01:36:45.0374590Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:45.0374709Z               "line": 985
2026-06-21T01:36:45.0374798Z             },
2026-06-21T01:36:45.0374905Z             {
2026-06-21T01:36:45.0375048Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:45.0375152Z               "line": 1019
2026-06-21T01:36:45.0375258Z             }
2026-06-21T01:36:45.0375352Z           ]
2026-06-21T01:36:45.0375452Z         }
2026-06-21T01:36:45.0375558Z       }
2026-06-21T01:36:45.0375662Z     },
2026-06-21T01:36:45.0375762Z     {
2026-06-21T01:36:45.0375902Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T01:36:45.0376531Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T01:36:45.0376658Z       "requiredStages": [
2026-06-21T01:36:45.0376767Z         "impl",
2026-06-21T01:36:45.0376873Z         "unit"
2026-06-21T01:36:45.0376982Z       ],
2026-06-21T01:36:45.0377086Z       "stages": {
2026-06-21T01:36:45.0377202Z         "doc": {
2026-06-21T01:36:45.0377320Z           "complete": false,
2026-06-21T01:36:45.0377431Z           "evidence": []
2026-06-21T01:36:45.0377535Z         },
2026-06-21T01:36:45.0377640Z         "impl": {
2026-06-21T01:36:45.0377765Z           "complete": true,
2026-06-21T01:36:45.0377864Z           "evidence": [
2026-06-21T01:36:45.0377973Z             {
2026-06-21T01:36:45.0378123Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0378231Z               "line": 759
2026-06-21T01:36:45.0378341Z             }
2026-06-21T01:36:45.0378447Z           ]
2026-06-21T01:36:45.0378550Z         },
2026-06-21T01:36:45.0378661Z         "int": {
2026-06-21T01:36:45.0378781Z           "complete": false,
2026-06-21T01:36:45.0378889Z           "evidence": []
2026-06-21T01:36:45.0379074Z         },
2026-06-21T01:36:45.0379182Z         "unit": {
2026-06-21T01:36:45.0379296Z           "complete": true,
2026-06-21T01:36:45.0379411Z           "evidence": [
2026-06-21T01:36:45.0379611Z             {
2026-06-21T01:36:45.0379759Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0379868Z               "line": 873
2026-06-21T01:36:45.0379973Z             }
2026-06-21T01:36:45.0380078Z           ]
2026-06-21T01:36:45.0380178Z         }
2026-06-21T01:36:45.0380283Z       }
2026-06-21T01:36:45.0380384Z     },
2026-06-21T01:36:45.0380488Z     {
2026-06-21T01:36:45.0380641Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T01:36:45.0383160Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T01:36:45.0383403Z       "requiredStages": [
2026-06-21T01:36:45.0383504Z         "impl",
2026-06-21T01:36:45.0383608Z         "unit",
2026-06-21T01:36:45.0383713Z         "int"
2026-06-21T01:36:45.0383814Z       ],
2026-06-21T01:36:45.0383928Z       "stages": {
2026-06-21T01:36:45.0384037Z         "doc": {
2026-06-21T01:36:45.0384162Z           "complete": false,
2026-06-21T01:36:45.0384271Z           "evidence": []
2026-06-21T01:36:45.0384374Z         },
2026-06-21T01:36:45.0384484Z         "impl": {
2026-06-21T01:36:45.0384602Z           "complete": true,
2026-06-21T01:36:45.0384705Z           "evidence": [
2026-06-21T01:36:45.0384806Z             {
2026-06-21T01:36:45.0384959Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0385068Z               "line": 705
2026-06-21T01:36:45.0385169Z             }
2026-06-21T01:36:45.0385269Z           ]
2026-06-21T01:36:45.0385373Z         },
2026-06-21T01:36:45.0387976Z         "int": {
2026-06-21T01:36:45.0388119Z           "complete": true,
2026-06-21T01:36:45.0388242Z           "evidence": [
2026-06-21T01:36:45.0388339Z             {
2026-06-21T01:36:45.0388529Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T01:36:45.0388645Z               "line": 24
2026-06-21T01:36:45.0388740Z             }
2026-06-21T01:36:45.0388849Z           ]
2026-06-21T01:36:45.0389055Z         },
2026-06-21T01:36:45.0389164Z         "unit": {
2026-06-21T01:36:45.0389284Z           "complete": true,
2026-06-21T01:36:45.0389421Z           "evidence": [
2026-06-21T01:36:45.0389520Z             {
2026-06-21T01:36:45.0389701Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0389813Z               "line": 918
2026-06-21T01:36:45.0389909Z             }
2026-06-21T01:36:45.0390004Z           ]
2026-06-21T01:36:45.0390109Z         }
2026-06-21T01:36:45.0390209Z       }
2026-06-21T01:36:45.0390310Z     },
2026-06-21T01:36:45.0390410Z     {
2026-06-21T01:36:45.0390558Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T01:36:45.0394403Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T01:36:45.0394742Z       "requiredStages": [
2026-06-21T01:36:45.0394850Z         "impl",
2026-06-21T01:36:45.0395068Z         "unit",
2026-06-21T01:36:45.0395176Z         "int"
2026-06-21T01:36:45.0395275Z       ],
2026-06-21T01:36:45.0395386Z       "stages": {
2026-06-21T01:36:45.0395486Z         "doc": {
2026-06-21T01:36:45.0395599Z           "complete": false,
2026-06-21T01:36:45.0395711Z           "evidence": []
2026-06-21T01:36:45.0395820Z         },
2026-06-21T01:36:45.0395928Z         "impl": {
2026-06-21T01:36:45.0396049Z           "complete": true,
2026-06-21T01:36:45.0396153Z           "evidence": [
2026-06-21T01:36:45.0396262Z             {
2026-06-21T01:36:45.0396416Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0396525Z               "line": 391
2026-06-21T01:36:45.0396630Z             },
2026-06-21T01:36:45.0396735Z             {
2026-06-21T01:36:45.0396878Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0396989Z               "line": 343
2026-06-21T01:36:45.0397097Z             },
2026-06-21T01:36:45.0397197Z             {
2026-06-21T01:36:45.0397346Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0397459Z               "line": 1750
2026-06-21T01:36:45.0397561Z             },
2026-06-21T01:36:45.0397656Z             {
2026-06-21T01:36:45.0397788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0397892Z               "line": 3191
2026-06-21T01:36:45.0397998Z             }
2026-06-21T01:36:45.0398107Z           ]
2026-06-21T01:36:45.0398207Z         },
2026-06-21T01:36:45.0398313Z         "int": {
2026-06-21T01:36:45.0398436Z           "complete": true,
2026-06-21T01:36:45.0398536Z           "evidence": [
2026-06-21T01:36:45.0398642Z             {
2026-06-21T01:36:45.0398807Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:36:45.0398923Z               "line": 353
2026-06-21T01:36:45.0399103Z             },
2026-06-21T01:36:45.0399205Z             {
2026-06-21T01:36:45.0399376Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T01:36:45.0399495Z               "line": 23
2026-06-21T01:36:45.0399600Z             }
2026-06-21T01:36:45.0399704Z           ]
2026-06-21T01:36:45.0399810Z         },
2026-06-21T01:36:45.0399920Z         "unit": {
2026-06-21T01:36:45.0400027Z           "complete": true,
2026-06-21T01:36:45.0400142Z           "evidence": [
2026-06-21T01:36:45.0400242Z             {
2026-06-21T01:36:45.0400378Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0400498Z               "line": 743
2026-06-21T01:36:45.0400594Z             },
2026-06-21T01:36:45.0400697Z             {
2026-06-21T01:36:45.0400831Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0400946Z               "line": 7863
2026-06-21T01:36:45.0401045Z             }
2026-06-21T01:36:45.0401156Z           ]
2026-06-21T01:36:45.0401256Z         }
2026-06-21T01:36:45.0401360Z       }
2026-06-21T01:36:45.0401466Z     },
2026-06-21T01:36:45.0401556Z     {
2026-06-21T01:36:45.0401709Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T01:36:45.0405229Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T01:36:45.0405576Z       "requiredStages": [
2026-06-21T01:36:45.0405681Z         "impl",
2026-06-21T01:36:45.0405788Z         "unit",
2026-06-21T01:36:45.0405898Z         "int"
2026-06-21T01:36:45.0406008Z       ],
2026-06-21T01:36:45.0406117Z       "stages": {
2026-06-21T01:36:45.0406227Z         "doc": {
2026-06-21T01:36:45.0406346Z           "complete": false,
2026-06-21T01:36:45.0406460Z           "evidence": []
2026-06-21T01:36:45.0406561Z         },
2026-06-21T01:36:45.0406666Z         "impl": {
2026-06-21T01:36:45.0406784Z           "complete": true,
2026-06-21T01:36:45.0406886Z           "evidence": [
2026-06-21T01:36:45.0406990Z             {
2026-06-21T01:36:45.0407137Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0407239Z               "line": 64
2026-06-21T01:36:45.0407343Z             },
2026-06-21T01:36:45.0407452Z             {
2026-06-21T01:36:45.0407605Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0407715Z               "line": 78
2026-06-21T01:36:45.0407820Z             },
2026-06-21T01:36:45.0407915Z             {
2026-06-21T01:36:45.0408063Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0408183Z               "line": 170
2026-06-21T01:36:45.0408286Z             },
2026-06-21T01:36:45.0408390Z             {
2026-06-21T01:36:45.0408539Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0408648Z               "line": 185
2026-06-21T01:36:45.0408753Z             },
2026-06-21T01:36:45.0408854Z             {
2026-06-21T01:36:45.0409082Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0409188Z               "line": 195
2026-06-21T01:36:45.0409292Z             },
2026-06-21T01:36:45.0409392Z             {
2026-06-21T01:36:45.0409535Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0409659Z               "line": 205
2026-06-21T01:36:45.0409765Z             },
2026-06-21T01:36:45.0409864Z             {
2026-06-21T01:36:45.0410011Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0410132Z               "line": 294
2026-06-21T01:36:45.0410241Z             },
2026-06-21T01:36:45.0410351Z             {
2026-06-21T01:36:45.0410508Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0410616Z               "line": 308
2026-06-21T01:36:45.0410721Z             },
2026-06-21T01:36:45.0410825Z             {
2026-06-21T01:36:45.0410981Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0411086Z               "line": 377
2026-06-21T01:36:45.0411196Z             },
2026-06-21T01:36:45.0411300Z             {
2026-06-21T01:36:45.0411449Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0411563Z               "line": 437
2026-06-21T01:36:45.0411668Z             },
2026-06-21T01:36:45.0411773Z             {
2026-06-21T01:36:45.0411920Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0412036Z               "line": 455
2026-06-21T01:36:45.0412130Z             }
2026-06-21T01:36:45.0412230Z           ]
2026-06-21T01:36:45.0412341Z         },
2026-06-21T01:36:45.0412559Z         "int": {
2026-06-21T01:36:45.0412675Z           "complete": true,
2026-06-21T01:36:45.0412783Z           "evidence": [
2026-06-21T01:36:45.0412888Z             {
2026-06-21T01:36:45.0413061Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:36:45.0413166Z               "line": 45
2026-06-21T01:36:45.0413271Z             },
2026-06-21T01:36:45.0413371Z             {
2026-06-21T01:36:45.0413536Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T01:36:45.0413650Z               "line": 354
2026-06-21T01:36:45.0413763Z             },
2026-06-21T01:36:45.0413867Z             {
2026-06-21T01:36:45.0414148Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T01:36:45.0414269Z               "line": 31
2026-06-21T01:36:45.0414364Z             }
2026-06-21T01:36:45.0414472Z           ]
2026-06-21T01:36:45.0414574Z         },
2026-06-21T01:36:45.0414688Z         "unit": {
2026-06-21T01:36:45.0414806Z           "complete": true,
2026-06-21T01:36:45.0414927Z           "evidence": [
2026-06-21T01:36:45.0415026Z             {
2026-06-21T01:36:45.0415174Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0415294Z               "line": 727
2026-06-21T01:36:45.0415393Z             }
2026-06-21T01:36:45.0415499Z           ]
2026-06-21T01:36:45.0415604Z         }
2026-06-21T01:36:45.0415708Z       }
2026-06-21T01:36:45.0415804Z     },
2026-06-21T01:36:45.0415909Z     {
2026-06-21T01:36:45.0416036Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T01:36:45.0416297Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T01:36:45.0416424Z       "requiredStages": [
2026-06-21T01:36:45.0416530Z         "impl",
2026-06-21T01:36:45.0416635Z         "unit"
2026-06-21T01:36:45.0416744Z       ],
2026-06-21T01:36:45.0416845Z       "stages": {
2026-06-21T01:36:45.0416954Z         "doc": {
2026-06-21T01:36:45.0417059Z           "complete": false,
2026-06-21T01:36:45.0417179Z           "evidence": []
2026-06-21T01:36:45.0417279Z         },
2026-06-21T01:36:45.0417378Z         "impl": {
2026-06-21T01:36:45.0417494Z           "complete": true,
2026-06-21T01:36:45.0417603Z           "evidence": [
2026-06-21T01:36:45.0417707Z             {
2026-06-21T01:36:45.0417851Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0417964Z               "line": 14
2026-06-21T01:36:45.0418066Z             },
2026-06-21T01:36:45.0418170Z             {
2026-06-21T01:36:45.0418308Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.0418419Z               "line": 566
2026-06-21T01:36:45.0418527Z             }
2026-06-21T01:36:45.0418623Z           ]
2026-06-21T01:36:45.0418724Z         },
2026-06-21T01:36:45.0418837Z         "int": {
2026-06-21T01:36:45.0419018Z           "complete": false,
2026-06-21T01:36:45.0419128Z           "evidence": []
2026-06-21T01:36:45.0419232Z         },
2026-06-21T01:36:45.0419337Z         "unit": {
2026-06-21T01:36:45.0419457Z           "complete": true,
2026-06-21T01:36:45.0419575Z           "evidence": [
2026-06-21T01:36:45.0419671Z             {
2026-06-21T01:36:45.0419814Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0419933Z               "line": 130
2026-06-21T01:36:45.0420034Z             },
2026-06-21T01:36:45.0420143Z             {
2026-06-21T01:36:45.0420276Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0420391Z               "line": 138
2026-06-21T01:36:45.0420491Z             },
2026-06-21T01:36:45.0420591Z             {
2026-06-21T01:36:45.0420739Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0420858Z               "line": 146
2026-06-21T01:36:45.0420954Z             },
2026-06-21T01:36:45.0421059Z             {
2026-06-21T01:36:45.0421195Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0421301Z               "line": 154
2026-06-21T01:36:45.0421399Z             },
2026-06-21T01:36:45.0421613Z             {
2026-06-21T01:36:45.0421751Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0421865Z               "line": 162
2026-06-21T01:36:45.0421966Z             },
2026-06-21T01:36:45.0422066Z             {
2026-06-21T01:36:45.0422204Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T01:36:45.0422305Z               "line": 170
2026-06-21T01:36:45.0422409Z             }
2026-06-21T01:36:45.0422514Z           ]
2026-06-21T01:36:45.0422620Z         }
2026-06-21T01:36:45.0422715Z       }
2026-06-21T01:36:45.0422819Z     },
2026-06-21T01:36:45.0422920Z     {
2026-06-21T01:36:45.0423058Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T01:36:45.0424139Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T01:36:45.0424257Z       "requiredStages": [
2026-06-21T01:36:45.0424370Z         "impl",
2026-06-21T01:36:45.0424480Z         "unit"
2026-06-21T01:36:45.0424581Z       ],
2026-06-21T01:36:45.0424694Z       "stages": {
2026-06-21T01:36:45.0424800Z         "doc": {
2026-06-21T01:36:45.0424914Z           "complete": false,
2026-06-21T01:36:45.0425023Z           "evidence": []
2026-06-21T01:36:45.0425134Z         },
2026-06-21T01:36:45.0425238Z         "impl": {
2026-06-21T01:36:45.0425352Z           "complete": true,
2026-06-21T01:36:45.0425468Z           "evidence": [
2026-06-21T01:36:45.0425567Z             {
2026-06-21T01:36:45.0425734Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0425859Z               "line": 34
2026-06-21T01:36:45.0425958Z             }
2026-06-21T01:36:45.0426064Z           ]
2026-06-21T01:36:45.0426169Z         },
2026-06-21T01:36:45.0426273Z         "int": {
2026-06-21T01:36:45.0426379Z           "complete": false,
2026-06-21T01:36:45.0426493Z           "evidence": []
2026-06-21T01:36:45.0426596Z         },
2026-06-21T01:36:45.0426701Z         "unit": {
2026-06-21T01:36:45.0426820Z           "complete": true,
2026-06-21T01:36:45.0426927Z           "evidence": [
2026-06-21T01:36:45.0427033Z             {
2026-06-21T01:36:45.0427204Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0427318Z               "line": 188
2026-06-21T01:36:45.0427420Z             },
2026-06-21T01:36:45.0427524Z             {
2026-06-21T01:36:45.0427691Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0427800Z               "line": 200
2026-06-21T01:36:45.0427909Z             },
2026-06-21T01:36:45.0428015Z             {
2026-06-21T01:36:45.0428177Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0428286Z               "line": 211
2026-06-21T01:36:45.0428388Z             },
2026-06-21T01:36:45.0428492Z             {
2026-06-21T01:36:45.0428659Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0428782Z               "line": 253
2026-06-21T01:36:45.0428887Z             },
2026-06-21T01:36:45.0429064Z             {
2026-06-21T01:36:45.0429231Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0429337Z               "line": 277
2026-06-21T01:36:45.0429439Z             },
2026-06-21T01:36:45.0429539Z             {
2026-06-21T01:36:45.0429708Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0429816Z               "line": 300
2026-06-21T01:36:45.0429926Z             },
2026-06-21T01:36:45.0430031Z             {
2026-06-21T01:36:45.0430202Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T01:36:45.0430312Z               "line": 316
2026-06-21T01:36:45.0430407Z             }
2026-06-21T01:36:45.0430507Z           ]
2026-06-21T01:36:45.0430609Z         }
2026-06-21T01:36:45.0430713Z       }
2026-06-21T01:36:45.0430813Z     },
2026-06-21T01:36:45.0431018Z     {
2026-06-21T01:36:45.0431161Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T01:36:45.0431775Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T01:36:45.0431903Z       "requiredStages": [
2026-06-21T01:36:45.0432016Z         "impl",
2026-06-21T01:36:45.0432115Z         "unit"
2026-06-21T01:36:45.0432221Z       ],
2026-06-21T01:36:45.0432326Z       "stages": {
2026-06-21T01:36:45.0432435Z         "doc": {
2026-06-21T01:36:45.0432550Z           "complete": false,
2026-06-21T01:36:45.0432769Z           "evidence": []
2026-06-21T01:36:45.0432865Z         },
2026-06-21T01:36:45.0432969Z         "impl": {
2026-06-21T01:36:45.0433074Z           "complete": true,
2026-06-21T01:36:45.0433184Z           "evidence": [
2026-06-21T01:36:45.0433293Z             {
2026-06-21T01:36:45.0433437Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0433551Z               "line": 29
2026-06-21T01:36:45.0433656Z             },
2026-06-21T01:36:45.0433767Z             {
2026-06-21T01:36:45.0433923Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0434028Z               "line": 174
2026-06-21T01:36:45.0434134Z             },
2026-06-21T01:36:45.0434237Z             {
2026-06-21T01:36:45.0434377Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0434496Z               "line": 194
2026-06-21T01:36:45.0434599Z             },
2026-06-21T01:36:45.0434704Z             {
2026-06-21T01:36:45.0434850Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0434963Z               "line": 222
2026-06-21T01:36:45.0435065Z             }
2026-06-21T01:36:45.0435170Z           ]
2026-06-21T01:36:45.0435283Z         },
2026-06-21T01:36:45.0435384Z         "int": {
2026-06-21T01:36:45.0435508Z           "complete": false,
2026-06-21T01:36:45.0435621Z           "evidence": []
2026-06-21T01:36:45.0435723Z         },
2026-06-21T01:36:45.0435818Z         "unit": {
2026-06-21T01:36:45.0435936Z           "complete": true,
2026-06-21T01:36:45.0436056Z           "evidence": [
2026-06-21T01:36:45.0436161Z             {
2026-06-21T01:36:45.0436309Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0436414Z               "line": 329
2026-06-21T01:36:45.0436518Z             },
2026-06-21T01:36:45.0436619Z             {
2026-06-21T01:36:45.0436762Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0436871Z               "line": 344
2026-06-21T01:36:45.0436982Z             },
2026-06-21T01:36:45.0437095Z             {
2026-06-21T01:36:45.0437237Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0437337Z               "line": 417
2026-06-21T01:36:45.0437440Z             },
2026-06-21T01:36:45.0437549Z             {
2026-06-21T01:36:45.0437693Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0437802Z               "line": 433
2026-06-21T01:36:45.0437912Z             },
2026-06-21T01:36:45.0438013Z             {
2026-06-21T01:36:45.0438164Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0438275Z               "line": 492
2026-06-21T01:36:45.0438375Z             },
2026-06-21T01:36:45.0438488Z             {
2026-06-21T01:36:45.0438623Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0438742Z               "line": 506
2026-06-21T01:36:45.0438842Z             },
2026-06-21T01:36:45.0439038Z             {
2026-06-21T01:36:45.0439176Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0439295Z               "line": 517
2026-06-21T01:36:45.0439395Z             },
2026-06-21T01:36:45.0439501Z             {
2026-06-21T01:36:45.0439643Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0439743Z               "line": 528
2026-06-21T01:36:45.0439849Z             }
2026-06-21T01:36:45.0440057Z           ]
2026-06-21T01:36:45.0440167Z         }
2026-06-21T01:36:45.0440268Z       }
2026-06-21T01:36:45.0440366Z     },
2026-06-21T01:36:45.0440472Z     {
2026-06-21T01:36:45.0440620Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T01:36:45.0441363Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T01:36:45.0441493Z       "requiredStages": [
2026-06-21T01:36:45.0441602Z         "impl",
2026-06-21T01:36:45.0441707Z         "unit"
2026-06-21T01:36:45.0441911Z       ],
2026-06-21T01:36:45.0442022Z       "stages": {
2026-06-21T01:36:45.0442113Z         "doc": {
2026-06-21T01:36:45.0442230Z           "complete": false,
2026-06-21T01:36:45.0442349Z           "evidence": []
2026-06-21T01:36:45.0442445Z         },
2026-06-21T01:36:45.0442547Z         "impl": {
2026-06-21T01:36:45.0442656Z           "complete": true,
2026-06-21T01:36:45.0442781Z           "evidence": [
2026-06-21T01:36:45.0442886Z             {
2026-06-21T01:36:45.0443058Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0443163Z               "line": 27
2026-06-21T01:36:45.0443267Z             },
2026-06-21T01:36:45.0443373Z             {
2026-06-21T01:36:45.0443534Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0443649Z               "line": 110
2026-06-21T01:36:45.0443749Z             },
2026-06-21T01:36:45.0443858Z             {
2026-06-21T01:36:45.0444026Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0444130Z               "line": 153
2026-06-21T01:36:45.0444235Z             },
2026-06-21T01:36:45.0444337Z             {
2026-06-21T01:36:45.0444493Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0444598Z               "line": 182
2026-06-21T01:36:45.0444703Z             },
2026-06-21T01:36:45.0444812Z             {
2026-06-21T01:36:45.0444976Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0445084Z               "line": 31
2026-06-21T01:36:45.0445192Z             },
2026-06-21T01:36:45.0445293Z             {
2026-06-21T01:36:45.0445462Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0445576Z               "line": 113
2026-06-21T01:36:45.0445677Z             },
2026-06-21T01:36:45.0445782Z             {
2026-06-21T01:36:45.0445954Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0446059Z               "line": 138
2026-06-21T01:36:45.0446167Z             }
2026-06-21T01:36:45.0446269Z           ]
2026-06-21T01:36:45.0446378Z         },
2026-06-21T01:36:45.0446491Z         "int": {
2026-06-21T01:36:45.0446612Z           "complete": false,
2026-06-21T01:36:45.0446711Z           "evidence": []
2026-06-21T01:36:45.0446806Z         },
2026-06-21T01:36:45.0446917Z         "unit": {
2026-06-21T01:36:45.0447026Z           "complete": true,
2026-06-21T01:36:45.0447140Z           "evidence": [
2026-06-21T01:36:45.0447242Z             {
2026-06-21T01:36:45.0447403Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0447518Z               "line": 261
2026-06-21T01:36:45.0447618Z             },
2026-06-21T01:36:45.0447721Z             {
2026-06-21T01:36:45.0447883Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0448000Z               "line": 276
2026-06-21T01:36:45.0448105Z             },
2026-06-21T01:36:45.0448200Z             {
2026-06-21T01:36:45.0448358Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0448477Z               "line": 293
2026-06-21T01:36:45.0448578Z             },
2026-06-21T01:36:45.0448682Z             {
2026-06-21T01:36:45.0448835Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0449034Z               "line": 310
2026-06-21T01:36:45.0449245Z             },
2026-06-21T01:36:45.0449354Z             {
2026-06-21T01:36:45.0449517Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0449627Z               "line": 327
2026-06-21T01:36:45.0449727Z             },
2026-06-21T01:36:45.0449827Z             {
2026-06-21T01:36:45.0449984Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.0450085Z               "line": 366
2026-06-21T01:36:45.0450194Z             },
2026-06-21T01:36:45.0450294Z             {
2026-06-21T01:36:45.0450467Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0450678Z               "line": 179
2026-06-21T01:36:45.0450780Z             },
2026-06-21T01:36:45.0450880Z             {
2026-06-21T01:36:45.0451047Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0451161Z               "line": 194
2026-06-21T01:36:45.0451260Z             },
2026-06-21T01:36:45.0451376Z             {
2026-06-21T01:36:45.0451542Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0451652Z               "line": 204
2026-06-21T01:36:45.0451757Z             },
2026-06-21T01:36:45.0451857Z             {
2026-06-21T01:36:45.0452034Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0452142Z               "line": 259
2026-06-21T01:36:45.0452252Z             },
2026-06-21T01:36:45.0452363Z             {
2026-06-21T01:36:45.0452524Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0452635Z               "line": 269
2026-06-21T01:36:45.0452749Z             },
2026-06-21T01:36:45.0452852Z             {
2026-06-21T01:36:45.0453024Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.0453136Z               "line": 283
2026-06-21T01:36:45.0453240Z             }
2026-06-21T01:36:45.0453346Z           ]
2026-06-21T01:36:45.0453455Z         }
2026-06-21T01:36:45.0453565Z       }
2026-06-21T01:36:45.0453671Z     },
2026-06-21T01:36:45.0453770Z     {
2026-06-21T01:36:45.0453909Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T01:36:45.0454137Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T01:36:45.0454262Z       "requiredStages": [],
2026-06-21T01:36:45.0454371Z       "stages": {
2026-06-21T01:36:45.0454471Z         "doc": {
2026-06-21T01:36:45.0454596Z           "complete": false,
2026-06-21T01:36:45.0454705Z           "evidence": []
2026-06-21T01:36:45.0454805Z         },
2026-06-21T01:36:45.0454921Z         "impl": {
2026-06-21T01:36:45.0455038Z           "complete": false,
2026-06-21T01:36:45.0455163Z           "evidence": []
2026-06-21T01:36:45.0455259Z         },
2026-06-21T01:36:45.0455353Z         "int": {
2026-06-21T01:36:45.0455483Z           "complete": false,
2026-06-21T01:36:45.0455588Z           "evidence": []
2026-06-21T01:36:45.0455686Z         },
2026-06-21T01:36:45.0455795Z         "unit": {
2026-06-21T01:36:45.0455924Z           "complete": false,
2026-06-21T01:36:45.0456037Z           "evidence": []
2026-06-21T01:36:45.0456142Z         }
2026-06-21T01:36:45.0456247Z       }
2026-06-21T01:36:45.0456351Z     },
2026-06-21T01:36:45.0456451Z     {
2026-06-21T01:36:45.0456605Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T01:36:45.0457510Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T01:36:45.0457638Z       "requiredStages": [
2026-06-21T01:36:45.0457744Z         "impl",
2026-06-21T01:36:45.0457858Z         "unit"
2026-06-21T01:36:45.0457958Z       ],
2026-06-21T01:36:45.0458069Z       "stages": {
2026-06-21T01:36:45.0458173Z         "doc": {
2026-06-21T01:36:45.0458291Z           "complete": false,
2026-06-21T01:36:45.0458415Z           "evidence": []
2026-06-21T01:36:45.0458599Z         },
2026-06-21T01:36:45.0458708Z         "impl": {
2026-06-21T01:36:45.0458823Z           "complete": true,
2026-06-21T01:36:45.0459032Z           "evidence": [
2026-06-21T01:36:45.0459129Z             {
2026-06-21T01:36:45.0459289Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0459400Z               "line": 26
2026-06-21T01:36:45.0459500Z             },
2026-06-21T01:36:45.0459608Z             {
2026-06-21T01:36:45.0459762Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0459876Z               "line": 95
2026-06-21T01:36:45.0459981Z             },
2026-06-21T01:36:45.0460210Z             {
2026-06-21T01:36:45.0460363Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0460467Z               "line": 166
2026-06-21T01:36:45.0460577Z             },
2026-06-21T01:36:45.0460678Z             {
2026-06-21T01:36:45.0460830Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0460936Z               "line": 19
2026-06-21T01:36:45.0461041Z             },
2026-06-21T01:36:45.0461139Z             {
2026-06-21T01:36:45.0461282Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0461393Z               "line": 50
2026-06-21T01:36:45.0461496Z             },
2026-06-21T01:36:45.0461597Z             {
2026-06-21T01:36:45.0461736Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:36:45.0461844Z               "line": 18
2026-06-21T01:36:45.0461950Z             },
2026-06-21T01:36:45.0462045Z             {
2026-06-21T01:36:45.0462188Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:36:45.0462308Z               "line": 71
2026-06-21T01:36:45.0462413Z             },
2026-06-21T01:36:45.0462517Z             {
2026-06-21T01:36:45.0462670Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.0462784Z               "line": 87
2026-06-21T01:36:45.0462885Z             }
2026-06-21T01:36:45.0462994Z           ]
2026-06-21T01:36:45.0463103Z         },
2026-06-21T01:36:45.0463210Z         "int": {
2026-06-21T01:36:45.0463327Z           "complete": false,
2026-06-21T01:36:45.0463441Z           "evidence": []
2026-06-21T01:36:45.0463550Z         },
2026-06-21T01:36:45.0463659Z         "unit": {
2026-06-21T01:36:45.0463782Z           "complete": true,
2026-06-21T01:36:45.0463887Z           "evidence": [
2026-06-21T01:36:45.0463992Z             {
2026-06-21T01:36:45.0464144Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0464259Z               "line": 289
2026-06-21T01:36:45.0464368Z             },
2026-06-21T01:36:45.0464464Z             {
2026-06-21T01:36:45.0464627Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0464735Z               "line": 314
2026-06-21T01:36:45.0464841Z             },
2026-06-21T01:36:45.0464936Z             {
2026-06-21T01:36:45.0465093Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0465213Z               "line": 350
2026-06-21T01:36:45.0465313Z             },
2026-06-21T01:36:45.0465418Z             {
2026-06-21T01:36:45.0465565Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0465679Z               "line": 418
2026-06-21T01:36:45.0465781Z             },
2026-06-21T01:36:45.0465894Z             {
2026-06-21T01:36:45.0466048Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0466153Z               "line": 429
2026-06-21T01:36:45.0466260Z             },
2026-06-21T01:36:45.0466365Z             {
2026-06-21T01:36:45.0466512Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0466635Z               "line": 460
2026-06-21T01:36:45.0466730Z             },
2026-06-21T01:36:45.0466836Z             {
2026-06-21T01:36:45.0466982Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.0467107Z               "line": 471
2026-06-21T01:36:45.0467212Z             },
2026-06-21T01:36:45.0467311Z             {
2026-06-21T01:36:45.0467574Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0467679Z               "line": 77
2026-06-21T01:36:45.0467788Z             },
2026-06-21T01:36:45.0467893Z             {
2026-06-21T01:36:45.0468048Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0468155Z               "line": 97
2026-06-21T01:36:45.0468261Z             },
2026-06-21T01:36:45.0468362Z             {
2026-06-21T01:36:45.0468508Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0468624Z               "line": 112
2026-06-21T01:36:45.0468724Z             },
2026-06-21T01:36:45.0468837Z             {
2026-06-21T01:36:45.0469116Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0469239Z               "line": 123
2026-06-21T01:36:45.0469369Z             },
2026-06-21T01:36:45.0469478Z             {
2026-06-21T01:36:45.0469636Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0469750Z               "line": 130
2026-06-21T01:36:45.0469849Z             },
2026-06-21T01:36:45.0469951Z             {
2026-06-21T01:36:45.0470103Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T01:36:45.0470213Z               "line": 145
2026-06-21T01:36:45.0470313Z             },
2026-06-21T01:36:45.0470418Z             {
2026-06-21T01:36:45.0470556Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:36:45.0470666Z               "line": 115
2026-06-21T01:36:45.0470765Z             },
2026-06-21T01:36:45.0470871Z             {
2026-06-21T01:36:45.0471013Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:36:45.0471123Z               "line": 130
2026-06-21T01:36:45.0471234Z             },
2026-06-21T01:36:45.0471337Z             {
2026-06-21T01:36:45.0471477Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.0471587Z               "line": 428
2026-06-21T01:36:45.0471695Z             }
2026-06-21T01:36:45.0471804Z           ]
2026-06-21T01:36:45.0471910Z         }
2026-06-21T01:36:45.0472019Z       }
2026-06-21T01:36:45.0472119Z     },
2026-06-21T01:36:45.0472220Z     {
2026-06-21T01:36:45.0472367Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T01:36:45.0479852Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T01:36:45.0480220Z       "requiredStages": [
2026-06-21T01:36:45.0480334Z         "impl",
2026-06-21T01:36:45.0480433Z         "unit",
2026-06-21T01:36:45.0480540Z         "int"
2026-06-21T01:36:45.0480644Z       ],
2026-06-21T01:36:45.0480748Z       "stages": {
2026-06-21T01:36:45.0480854Z         "doc": {
2026-06-21T01:36:45.0481077Z           "complete": false,
2026-06-21T01:36:45.0481193Z           "evidence": []
2026-06-21T01:36:45.0481302Z         },
2026-06-21T01:36:45.0481407Z         "impl": {
2026-06-21T01:36:45.0481531Z           "complete": true,
2026-06-21T01:36:45.0481636Z           "evidence": [
2026-06-21T01:36:45.0481741Z             {
2026-06-21T01:36:45.0481916Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0482022Z               "line": 895
2026-06-21T01:36:45.0482133Z             },
2026-06-21T01:36:45.0482235Z             {
2026-06-21T01:36:45.0482388Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0482499Z               "line": 322
2026-06-21T01:36:45.0482607Z             }
2026-06-21T01:36:45.0482712Z           ]
2026-06-21T01:36:45.0482813Z         },
2026-06-21T01:36:45.0482922Z         "int": {
2026-06-21T01:36:45.0483037Z           "complete": true,
2026-06-21T01:36:45.0486137Z           "evidence": [
2026-06-21T01:36:45.0486276Z             {
2026-06-21T01:36:45.0486504Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.0486629Z               "line": 1909
2026-06-21T01:36:45.0486733Z             }
2026-06-21T01:36:45.0486839Z           ]
2026-06-21T01:36:45.0486944Z         },
2026-06-21T01:36:45.0487052Z         "unit": {
2026-06-21T01:36:45.0487178Z           "complete": true,
2026-06-21T01:36:45.0487292Z           "evidence": [
2026-06-21T01:36:45.0487395Z             {
2026-06-21T01:36:45.0487557Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0487674Z               "line": 2376
2026-06-21T01:36:45.0487774Z             },
2026-06-21T01:36:45.0487884Z             {
2026-06-21T01:36:45.0488036Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0488151Z               "line": 2440
2026-06-21T01:36:45.0488261Z             },
2026-06-21T01:36:45.0488365Z             {
2026-06-21T01:36:45.0488519Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0488629Z               "line": 2495
2026-06-21T01:36:45.0488737Z             }
2026-06-21T01:36:45.0488838Z           ]
2026-06-21T01:36:45.0488928Z         }
2026-06-21T01:36:45.0489134Z       }
2026-06-21T01:36:45.0489233Z     },
2026-06-21T01:36:45.0489342Z     {
2026-06-21T01:36:45.0489482Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T01:36:45.0490475Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T01:36:45.0490598Z       "requiredStages": [
2026-06-21T01:36:45.0490703Z         "doc",
2026-06-21T01:36:45.0490804Z         "impl",
2026-06-21T01:36:45.0490903Z         "unit"
2026-06-21T01:36:45.0491008Z       ],
2026-06-21T01:36:45.0491114Z       "stages": {
2026-06-21T01:36:45.0491218Z         "doc": {
2026-06-21T01:36:45.0491338Z           "complete": true,
2026-06-21T01:36:45.0491452Z           "evidence": [
2026-06-21T01:36:45.0491556Z             {
2026-06-21T01:36:45.0491686Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0491800Z               "line": 374
2026-06-21T01:36:45.0491900Z             }
2026-06-21T01:36:45.0491996Z           ]
2026-06-21T01:36:45.0492674Z         },
2026-06-21T01:36:45.0492781Z         "impl": {
2026-06-21T01:36:45.0492909Z           "complete": true,
2026-06-21T01:36:45.0493020Z           "evidence": [
2026-06-21T01:36:45.0493120Z             {
2026-06-21T01:36:45.0493277Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0493397Z               "line": 200
2026-06-21T01:36:45.0493496Z             },
2026-06-21T01:36:45.0493597Z             {
2026-06-21T01:36:45.0493754Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0493868Z               "line": 304
2026-06-21T01:36:45.0493969Z             },
2026-06-21T01:36:45.0494074Z             {
2026-06-21T01:36:45.0494327Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0494440Z               "line": 562
2026-06-21T01:36:45.0494541Z             },
2026-06-21T01:36:45.0494651Z             {
2026-06-21T01:36:45.0494789Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0494895Z               "line": 577
2026-06-21T01:36:45.0495007Z             },
2026-06-21T01:36:45.0495116Z             {
2026-06-21T01:36:45.0495264Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0495377Z               "line": 1224
2026-06-21T01:36:45.0495486Z             },
2026-06-21T01:36:45.0495587Z             {
2026-06-21T01:36:45.0495748Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0495859Z               "line": 443
2026-06-21T01:36:45.0495963Z             },
2026-06-21T01:36:45.0496072Z             {
2026-06-21T01:36:45.0496226Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0496354Z               "line": 590
2026-06-21T01:36:45.0496459Z             },
2026-06-21T01:36:45.0496559Z             {
2026-06-21T01:36:45.0496716Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0496827Z               "line": 731
2026-06-21T01:36:45.0496936Z             }
2026-06-21T01:36:45.0497040Z           ]
2026-06-21T01:36:45.0497147Z         },
2026-06-21T01:36:45.0497255Z         "int": {
2026-06-21T01:36:45.0497379Z           "complete": false,
2026-06-21T01:36:45.0497494Z           "evidence": []
2026-06-21T01:36:45.0497598Z         },
2026-06-21T01:36:45.0497704Z         "unit": {
2026-06-21T01:36:45.0497814Z           "complete": true,
2026-06-21T01:36:45.0497932Z           "evidence": [
2026-06-21T01:36:45.0498031Z             {
2026-06-21T01:36:45.0498183Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0498305Z               "line": 1155
2026-06-21T01:36:45.0498416Z             },
2026-06-21T01:36:45.0498516Z             {
2026-06-21T01:36:45.0498687Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T01:36:45.0498803Z               "line": 30
2026-06-21T01:36:45.0498906Z             }
2026-06-21T01:36:45.0499093Z           ]
2026-06-21T01:36:45.0499198Z         }
2026-06-21T01:36:45.0499297Z       }
2026-06-21T01:36:45.0499408Z     },
2026-06-21T01:36:45.0499502Z     {
2026-06-21T01:36:45.0499641Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T01:36:45.0503191Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T01:36:45.0503499Z       "requiredStages": [
2026-06-21T01:36:45.0503599Z         "impl",
2026-06-21T01:36:45.0503718Z         "unit",
2026-06-21T01:36:45.0503813Z         "int"
2026-06-21T01:36:45.0503909Z       ],
2026-06-21T01:36:45.0504018Z       "stages": {
2026-06-21T01:36:45.0504123Z         "doc": {
2026-06-21T01:36:45.0504247Z           "complete": false,
2026-06-21T01:36:45.0504361Z           "evidence": []
2026-06-21T01:36:45.0504462Z         },
2026-06-21T01:36:45.0504676Z         "impl": {
2026-06-21T01:36:45.0504796Z           "complete": true,
2026-06-21T01:36:45.0504905Z           "evidence": [
2026-06-21T01:36:45.0505010Z             {
2026-06-21T01:36:45.0505150Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0505262Z               "line": 718
2026-06-21T01:36:45.0505373Z             },
2026-06-21T01:36:45.0505479Z             {
2026-06-21T01:36:45.0505615Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0505734Z               "line": 887
2026-06-21T01:36:45.0505838Z             }
2026-06-21T01:36:45.0505946Z           ]
2026-06-21T01:36:45.0506046Z         },
2026-06-21T01:36:45.0506152Z         "int": {
2026-06-21T01:36:45.0506271Z           "complete": true,
2026-06-21T01:36:45.0506376Z           "evidence": [
2026-06-21T01:36:45.0506471Z             {
2026-06-21T01:36:45.0506633Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.0506749Z               "line": 403
2026-06-21T01:36:45.0506853Z             }
2026-06-21T01:36:45.0506957Z           ]
2026-06-21T01:36:45.0507058Z         },
2026-06-21T01:36:45.0507167Z         "unit": {
2026-06-21T01:36:45.0507295Z           "complete": true,
2026-06-21T01:36:45.0507402Z           "evidence": [
2026-06-21T01:36:45.0507501Z             {
2026-06-21T01:36:45.0507629Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0507754Z               "line": 1072
2026-06-21T01:36:45.0507849Z             },
2026-06-21T01:36:45.0507954Z             {
2026-06-21T01:36:45.0508088Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0508197Z               "line": 1096
2026-06-21T01:36:45.0508307Z             }
2026-06-21T01:36:45.0508407Z           ]
2026-06-21T01:36:45.0508511Z         }
2026-06-21T01:36:45.0508615Z       }
2026-06-21T01:36:45.0508720Z     },
2026-06-21T01:36:45.0508823Z     {
2026-06-21T01:36:45.0509048Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T01:36:45.0513349Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T01:36:45.0513631Z       "requiredStages": [
2026-06-21T01:36:45.0513732Z         "impl",
2026-06-21T01:36:45.0513832Z         "unit",
2026-06-21T01:36:45.0513935Z         "int"
2026-06-21T01:36:45.0514039Z       ],
2026-06-21T01:36:45.0514136Z       "stages": {
2026-06-21T01:36:45.0514245Z         "doc": {
2026-06-21T01:36:45.0514354Z           "complete": false,
2026-06-21T01:36:45.0514474Z           "evidence": []
2026-06-21T01:36:45.0514574Z         },
2026-06-21T01:36:45.0514674Z         "impl": {
2026-06-21T01:36:45.0514785Z           "complete": true,
2026-06-21T01:36:45.0514898Z           "evidence": [
2026-06-21T01:36:45.0514998Z             {
2026-06-21T01:36:45.0515236Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0515361Z               "line": 1417
2026-06-21T01:36:45.0515466Z             },
2026-06-21T01:36:45.0515575Z             {
2026-06-21T01:36:45.0515710Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0515813Z               "line": 1441
2026-06-21T01:36:45.0515933Z             }
2026-06-21T01:36:45.0516034Z           ]
2026-06-21T01:36:45.0516142Z         },
2026-06-21T01:36:45.0516246Z         "int": {
2026-06-21T01:36:45.0516356Z           "complete": true,
2026-06-21T01:36:45.0516473Z           "evidence": [
2026-06-21T01:36:45.0516582Z             {
2026-06-21T01:36:45.0516746Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T01:36:45.0516854Z               "line": 329
2026-06-21T01:36:45.0516959Z             }
2026-06-21T01:36:45.0517060Z           ]
2026-06-21T01:36:45.0517164Z         },
2026-06-21T01:36:45.0517270Z         "unit": {
2026-06-21T01:36:45.0517394Z           "complete": true,
2026-06-21T01:36:45.0517498Z           "evidence": [
2026-06-21T01:36:45.0517599Z             {
2026-06-21T01:36:45.0517737Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0517851Z               "line": 8169
2026-06-21T01:36:45.0517957Z             }
2026-06-21T01:36:45.0518061Z           ]
2026-06-21T01:36:45.0518175Z         }
2026-06-21T01:36:45.0518282Z       }
2026-06-21T01:36:45.0518380Z     },
2026-06-21T01:36:45.0518480Z     {
2026-06-21T01:36:45.0518601Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T01:36:45.0523033Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T01:36:45.0523219Z       "requiredStages": [
2026-06-21T01:36:45.0523328Z         "impl",
2026-06-21T01:36:45.0523438Z         "unit"
2026-06-21T01:36:45.0523543Z       ],
2026-06-21T01:36:45.0523652Z       "stages": {
2026-06-21T01:36:45.0523758Z         "doc": {
2026-06-21T01:36:45.0523881Z           "complete": false,
2026-06-21T01:36:45.0523987Z           "evidence": []
2026-06-21T01:36:45.0524087Z         },
2026-06-21T01:36:45.0524311Z         "impl": {
2026-06-21T01:36:45.0524430Z           "complete": true,
2026-06-21T01:36:45.0524528Z           "evidence": [
2026-06-21T01:36:45.0524638Z             {
2026-06-21T01:36:45.0524763Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0524876Z               "line": 910
2026-06-21T01:36:45.0524977Z             }
2026-06-21T01:36:45.0525082Z           ]
2026-06-21T01:36:45.0525186Z         },
2026-06-21T01:36:45.0525287Z         "int": {
2026-06-21T01:36:45.0525411Z           "complete": false,
2026-06-21T01:36:45.0525524Z           "evidence": []
2026-06-21T01:36:45.0525631Z         },
2026-06-21T01:36:45.0525739Z         "unit": {
2026-06-21T01:36:45.0525946Z           "complete": true,
2026-06-21T01:36:45.0526068Z           "evidence": [
2026-06-21T01:36:45.0526178Z             {
2026-06-21T01:36:45.0526308Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0526421Z               "line": 1112
2026-06-21T01:36:45.0526517Z             }
2026-06-21T01:36:45.0526628Z           ]
2026-06-21T01:36:45.0526731Z         }
2026-06-21T01:36:45.0526834Z       }
2026-06-21T01:36:45.0526935Z     },
2026-06-21T01:36:45.0527043Z     {
2026-06-21T01:36:45.0527205Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T01:36:45.0532155Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T01:36:45.0532326Z       "requiredStages": [
2026-06-21T01:36:45.0532425Z         "impl",
2026-06-21T01:36:45.0532534Z         "unit"
2026-06-21T01:36:45.0532643Z       ],
2026-06-21T01:36:45.0532754Z       "stages": {
2026-06-21T01:36:45.0532863Z         "doc": {
2026-06-21T01:36:45.0532983Z           "complete": false,
2026-06-21T01:36:45.0533092Z           "evidence": []
2026-06-21T01:36:45.0533201Z         },
2026-06-21T01:36:45.0533312Z         "impl": {
2026-06-21T01:36:45.0533430Z           "complete": true,
2026-06-21T01:36:45.0533534Z           "evidence": [
2026-06-21T01:36:45.0533645Z             {
2026-06-21T01:36:45.0533774Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0533878Z               "line": 264
2026-06-21T01:36:45.0533984Z             }
2026-06-21T01:36:45.0534088Z           ]
2026-06-21T01:36:45.0534193Z         },
2026-06-21T01:36:45.0534304Z         "int": {
2026-06-21T01:36:45.0534427Z           "complete": false,
2026-06-21T01:36:45.0534528Z           "evidence": []
2026-06-21T01:36:45.0534637Z         },
2026-06-21T01:36:45.0534731Z         "unit": {
2026-06-21T01:36:45.0534857Z           "complete": true,
2026-06-21T01:36:45.0534971Z           "evidence": [
2026-06-21T01:36:45.0535169Z             {
2026-06-21T01:36:45.0535304Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0535408Z               "line": 1094
2026-06-21T01:36:45.0535513Z             },
2026-06-21T01:36:45.0535618Z             {
2026-06-21T01:36:45.0535746Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0535862Z               "line": 1225
2026-06-21T01:36:45.0535957Z             },
2026-06-21T01:36:45.0536065Z             {
2026-06-21T01:36:45.0536191Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.0536309Z               "line": 1227
2026-06-21T01:36:45.0536414Z             }
2026-06-21T01:36:45.0536619Z           ]
2026-06-21T01:36:45.0536728Z         }
2026-06-21T01:36:45.0536830Z       }
2026-06-21T01:36:45.0536939Z     },
2026-06-21T01:36:45.0537038Z     {
2026-06-21T01:36:45.0537188Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T01:36:45.0537476Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T01:36:45.0537608Z       "requiredStages": [
2026-06-21T01:36:45.0537717Z         "impl",
2026-06-21T01:36:45.0537818Z         "unit"
2026-06-21T01:36:45.0537927Z       ],
2026-06-21T01:36:45.0538036Z       "stages": {
2026-06-21T01:36:45.0538138Z         "doc": {
2026-06-21T01:36:45.0538252Z           "complete": true,
2026-06-21T01:36:45.0538365Z           "evidence": [
2026-06-21T01:36:45.0538467Z             {
2026-06-21T01:36:45.0538604Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0538710Z               "line": 139
2026-06-21T01:36:45.0538810Z             }
2026-06-21T01:36:45.0538914Z           ]
2026-06-21T01:36:45.0539111Z         },
2026-06-21T01:36:45.0539206Z         "impl": {
2026-06-21T01:36:45.0539329Z           "complete": true,
2026-06-21T01:36:45.0539426Z           "evidence": [
2026-06-21T01:36:45.0539529Z             {
2026-06-21T01:36:45.0539669Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T01:36:45.0539792Z               "line": 29
2026-06-21T01:36:45.0539891Z             },
2026-06-21T01:36:45.0540002Z             {
2026-06-21T01:36:45.0540158Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.0540271Z               "line": 101
2026-06-21T01:36:45.0540377Z             },
2026-06-21T01:36:45.0540480Z             {
2026-06-21T01:36:45.0540628Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0540733Z               "line": 30
2026-06-21T01:36:45.0540837Z             },
2026-06-21T01:36:45.0540947Z             {
2026-06-21T01:36:45.0541081Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0541204Z               "line": 48
2026-06-21T01:36:45.0541310Z             }
2026-06-21T01:36:45.0541415Z           ]
2026-06-21T01:36:45.0541514Z         },
2026-06-21T01:36:45.0541620Z         "int": {
2026-06-21T01:36:45.0541743Z           "complete": false,
2026-06-21T01:36:45.0541857Z           "evidence": []
2026-06-21T01:36:45.0541964Z         },
2026-06-21T01:36:45.0542067Z         "unit": {
2026-06-21T01:36:45.0542191Z           "complete": true,
2026-06-21T01:36:45.0542302Z           "evidence": [
2026-06-21T01:36:45.0542396Z             {
2026-06-21T01:36:45.0542555Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0542664Z               "line": 162
2026-06-21T01:36:45.0542768Z             }
2026-06-21T01:36:45.0542858Z           ]
2026-06-21T01:36:45.0542962Z         }
2026-06-21T01:36:45.0543065Z       }
2026-06-21T01:36:45.0543170Z     },
2026-06-21T01:36:45.0543276Z     {
2026-06-21T01:36:45.0543423Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T01:36:45.0543863Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T01:36:45.0543986Z       "requiredStages": [
2026-06-21T01:36:45.0544095Z         "doc",
2026-06-21T01:36:45.0544197Z         "impl",
2026-06-21T01:36:45.0544291Z         "unit"
2026-06-21T01:36:45.0544596Z       ],
2026-06-21T01:36:45.0544691Z       "stages": {
2026-06-21T01:36:45.0544797Z         "doc": {
2026-06-21T01:36:45.0544906Z           "complete": true,
2026-06-21T01:36:45.0545025Z           "evidence": [
2026-06-21T01:36:45.0545122Z             {
2026-06-21T01:36:45.0545268Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0545383Z               "line": 151
2026-06-21T01:36:45.0545489Z             }
2026-06-21T01:36:45.0545601Z           ]
2026-06-21T01:36:45.0545696Z         },
2026-06-21T01:36:45.0545806Z         "impl": {
2026-06-21T01:36:45.0545916Z           "complete": true,
2026-06-21T01:36:45.0546035Z           "evidence": [
2026-06-21T01:36:45.0546245Z             {
2026-06-21T01:36:45.0546393Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0546503Z               "line": 22
2026-06-21T01:36:45.0546593Z             }
2026-06-21T01:36:45.0546698Z           ]
2026-06-21T01:36:45.0546798Z         },
2026-06-21T01:36:45.0546903Z         "int": {
2026-06-21T01:36:45.0547037Z           "complete": false,
2026-06-21T01:36:45.0547151Z           "evidence": []
2026-06-21T01:36:45.0547246Z         },
2026-06-21T01:36:45.0547352Z         "unit": {
2026-06-21T01:36:45.0547475Z           "complete": true,
2026-06-21T01:36:45.0547580Z           "evidence": [
2026-06-21T01:36:45.0547681Z             {
2026-06-21T01:36:45.0547832Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0547941Z               "line": 298
2026-06-21T01:36:45.0548041Z             }
2026-06-21T01:36:45.0548145Z           ]
2026-06-21T01:36:45.0548253Z         }
2026-06-21T01:36:45.0548354Z       }
2026-06-21T01:36:45.0548473Z     },
2026-06-21T01:36:45.0548573Z     {
2026-06-21T01:36:45.0548722Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T01:36:45.0549294Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T01:36:45.0549417Z       "requiredStages": [
2026-06-21T01:36:45.0549531Z         "impl",
2026-06-21T01:36:45.0549637Z         "unit"
2026-06-21T01:36:45.0549741Z       ],
2026-06-21T01:36:45.0549851Z       "stages": {
2026-06-21T01:36:45.0549952Z         "doc": {
2026-06-21T01:36:45.0550074Z           "complete": true,
2026-06-21T01:36:45.0550190Z           "evidence": [
2026-06-21T01:36:45.0550291Z             {
2026-06-21T01:36:45.0550418Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0550543Z               "line": 145
2026-06-21T01:36:45.0550648Z             }
2026-06-21T01:36:45.0550751Z           ]
2026-06-21T01:36:45.0550861Z         },
2026-06-21T01:36:45.0550965Z         "impl": {
2026-06-21T01:36:45.0551092Z           "complete": true,
2026-06-21T01:36:45.0551197Z           "evidence": [
2026-06-21T01:36:45.0551312Z             {
2026-06-21T01:36:45.0551478Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T01:36:45.0551593Z               "line": 160
2026-06-21T01:36:45.0551698Z             },
2026-06-21T01:36:45.0551797Z             {
2026-06-21T01:36:45.0551955Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0552079Z               "line": 200
2026-06-21T01:36:45.0552190Z             },
2026-06-21T01:36:45.0552289Z             {
2026-06-21T01:36:45.0552436Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0552562Z               "line": 298
2026-06-21T01:36:45.0552661Z             },
2026-06-21T01:36:45.0552771Z             {
2026-06-21T01:36:45.0552923Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:36:45.0553038Z               "line": 20
2026-06-21T01:36:45.0553149Z             }
2026-06-21T01:36:45.0553247Z           ]
2026-06-21T01:36:45.0553356Z         },
2026-06-21T01:36:45.0553461Z         "int": {
2026-06-21T01:36:45.0553574Z           "complete": false,
2026-06-21T01:36:45.0553692Z           "evidence": []
2026-06-21T01:36:45.0553788Z         },
2026-06-21T01:36:45.0553889Z         "unit": {
2026-06-21T01:36:45.0554118Z           "complete": true,
2026-06-21T01:36:45.0554217Z           "evidence": [
2026-06-21T01:36:45.0554321Z             {
2026-06-21T01:36:45.0554489Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0554598Z               "line": 937
2026-06-21T01:36:45.0554699Z             },
2026-06-21T01:36:45.0554799Z             {
2026-06-21T01:36:45.0554956Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T01:36:45.0555067Z               "line": 88
2026-06-21T01:36:45.0555161Z             },
2026-06-21T01:36:45.0555266Z             {
2026-06-21T01:36:45.0555410Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0555614Z               "line": 851
2026-06-21T01:36:45.0555725Z             },
2026-06-21T01:36:45.0555828Z             {
2026-06-21T01:36:45.0555973Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0556086Z               "line": 870
2026-06-21T01:36:45.0556209Z             },
2026-06-21T01:36:45.0556313Z             {
2026-06-21T01:36:45.0556471Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0556590Z               "line": 279
2026-06-21T01:36:45.0556691Z             },
2026-06-21T01:36:45.0556800Z             {
2026-06-21T01:36:45.0556934Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:36:45.0557053Z               "line": 82
2026-06-21T01:36:45.0557153Z             },
2026-06-21T01:36:45.0557254Z             {
2026-06-21T01:36:45.0557401Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:36:45.0557501Z               "line": 99
2026-06-21T01:36:45.0557622Z             },
2026-06-21T01:36:45.0557725Z             {
2026-06-21T01:36:45.0557873Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T01:36:45.0557979Z               "line": 119
2026-06-21T01:36:45.0558083Z             }
2026-06-21T01:36:45.0558183Z           ]
2026-06-21T01:36:45.0558275Z         }
2026-06-21T01:36:45.0558388Z       }
2026-06-21T01:36:45.0558482Z     },
2026-06-21T01:36:45.0558592Z     {
2026-06-21T01:36:45.0558743Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T01:36:45.0560273Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T01:36:45.0560406Z       "requiredStages": [
2026-06-21T01:36:45.0560512Z         "doc",
2026-06-21T01:36:45.0560621Z         "impl",
2026-06-21T01:36:45.0560730Z         "unit"
2026-06-21T01:36:45.0560837Z       ],
2026-06-21T01:36:45.0560945Z       "stages": {
2026-06-21T01:36:45.0561050Z         "doc": {
2026-06-21T01:36:45.0561175Z           "complete": true,
2026-06-21T01:36:45.0561302Z           "evidence": [
2026-06-21T01:36:45.0561406Z             {
2026-06-21T01:36:45.0561539Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0561647Z               "line": 157
2026-06-21T01:36:45.0561757Z             }
2026-06-21T01:36:45.0561862Z           ]
2026-06-21T01:36:45.0561966Z         },
2026-06-21T01:36:45.0562082Z         "impl": {
2026-06-21T01:36:45.0562196Z           "complete": true,
2026-06-21T01:36:45.0562310Z           "evidence": [
2026-06-21T01:36:45.0562397Z             {
2026-06-21T01:36:45.0562568Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:45.0562677Z               "line": 137
2026-06-21T01:36:45.0562788Z             },
2026-06-21T01:36:45.0562897Z             {
2026-06-21T01:36:45.0563055Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0563182Z               "line": 564
2026-06-21T01:36:45.0563288Z             },
2026-06-21T01:36:45.0563398Z             {
2026-06-21T01:36:45.0563651Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0563770Z               "line": 571
2026-06-21T01:36:45.0563878Z             },
2026-06-21T01:36:45.0563983Z             {
2026-06-21T01:36:45.0564134Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0564238Z               "line": 227
2026-06-21T01:36:45.0564343Z             }
2026-06-21T01:36:45.0564444Z           ]
2026-06-21T01:36:45.0564548Z         },
2026-06-21T01:36:45.0564663Z         "int": {
2026-06-21T01:36:45.0564773Z           "complete": false,
2026-06-21T01:36:45.0564877Z           "evidence": []
2026-06-21T01:36:45.0564983Z         },
2026-06-21T01:36:45.0565191Z         "unit": {
2026-06-21T01:36:45.0565302Z           "complete": true,
2026-06-21T01:36:45.0565425Z           "evidence": [
2026-06-21T01:36:45.0565530Z             {
2026-06-21T01:36:45.0565679Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0565802Z               "line": 1622
2026-06-21T01:36:45.0565908Z             },
2026-06-21T01:36:45.0566017Z             {
2026-06-21T01:36:45.0566169Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0566290Z               "line": 1680
2026-06-21T01:36:45.0566393Z             },
2026-06-21T01:36:45.0566489Z             {
2026-06-21T01:36:45.0566651Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0566764Z               "line": 883
2026-06-21T01:36:45.0566874Z             }
2026-06-21T01:36:45.0566960Z           ]
2026-06-21T01:36:45.0567069Z         }
2026-06-21T01:36:45.0567174Z       }
2026-06-21T01:36:45.0567275Z     },
2026-06-21T01:36:45.0567374Z     {
2026-06-21T01:36:45.0567513Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T01:36:45.0567751Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T01:36:45.0567872Z       "requiredStages": [
2026-06-21T01:36:45.0567980Z         "impl",
2026-06-21T01:36:45.0568090Z         "unit"
2026-06-21T01:36:45.0568191Z       ],
2026-06-21T01:36:45.0568300Z       "stages": {
2026-06-21T01:36:45.0568395Z         "doc": {
2026-06-21T01:36:45.0568516Z           "complete": false,
2026-06-21T01:36:45.0568619Z           "evidence": []
2026-06-21T01:36:45.0568729Z         },
2026-06-21T01:36:45.0568840Z         "impl": {
2026-06-21T01:36:45.0569023Z           "complete": true,
2026-06-21T01:36:45.0569138Z           "evidence": [
2026-06-21T01:36:45.0569241Z             {
2026-06-21T01:36:45.0569392Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.0569503Z               "line": 15
2026-06-21T01:36:45.0569608Z             },
2026-06-21T01:36:45.0569717Z             {
2026-06-21T01:36:45.0569866Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0569984Z               "line": 55
2026-06-21T01:36:45.0570090Z             },
2026-06-21T01:36:45.0570199Z             {
2026-06-21T01:36:45.0570346Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0570466Z               "line": 66
2026-06-21T01:36:45.0570571Z             },
2026-06-21T01:36:45.0570676Z             {
2026-06-21T01:36:45.0570823Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0570933Z               "line": 115
2026-06-21T01:36:45.0571034Z             },
2026-06-21T01:36:45.0571138Z             {
2026-06-21T01:36:45.0571290Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0571406Z               "line": 138
2026-06-21T01:36:45.0571510Z             }
2026-06-21T01:36:45.0571615Z           ]
2026-06-21T01:36:45.0571721Z         },
2026-06-21T01:36:45.0571839Z         "int": {
2026-06-21T01:36:45.0571957Z           "complete": false,
2026-06-21T01:36:45.0572071Z           "evidence": []
2026-06-21T01:36:45.0572170Z         },
2026-06-21T01:36:45.0572274Z         "unit": {
2026-06-21T01:36:45.0572390Z           "complete": true,
2026-06-21T01:36:45.0572499Z           "evidence": [
2026-06-21T01:36:45.0572695Z             {
2026-06-21T01:36:45.0572842Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.0572952Z               "line": 363
2026-06-21T01:36:45.0573057Z             },
2026-06-21T01:36:45.0573161Z             {
2026-06-21T01:36:45.0573296Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.0573405Z               "line": 369
2026-06-21T01:36:45.0573509Z             },
2026-06-21T01:36:45.0573615Z             {
2026-06-21T01:36:45.0573761Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.0573877Z               "line": 383
2026-06-21T01:36:45.0573973Z             },
2026-06-21T01:36:45.0574206Z             {
2026-06-21T01:36:45.0574349Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.0574457Z               "line": 392
2026-06-21T01:36:45.0574567Z             },
2026-06-21T01:36:45.0574666Z             {
2026-06-21T01:36:45.0574822Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0574932Z               "line": 195
2026-06-21T01:36:45.0575033Z             },
2026-06-21T01:36:45.0575136Z             {
2026-06-21T01:36:45.0575290Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0575417Z               "line": 208
2026-06-21T01:36:45.0575519Z             },
2026-06-21T01:36:45.0575623Z             {
2026-06-21T01:36:45.0575766Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0575886Z               "line": 271
2026-06-21T01:36:45.0575990Z             },
2026-06-21T01:36:45.0576100Z             {
2026-06-21T01:36:45.0576248Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0576371Z               "line": 290
2026-06-21T01:36:45.0576478Z             },
2026-06-21T01:36:45.0576573Z             {
2026-06-21T01:36:45.0576720Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0576831Z               "line": 319
2026-06-21T01:36:45.0576939Z             }
2026-06-21T01:36:45.0577049Z           ]
2026-06-21T01:36:45.0577150Z         }
2026-06-21T01:36:45.0577254Z       }
2026-06-21T01:36:45.0577353Z     },
2026-06-21T01:36:45.0577448Z     {
2026-06-21T01:36:45.0577592Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T01:36:45.0577911Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T01:36:45.0578039Z       "requiredStages": [
2026-06-21T01:36:45.0578131Z         "impl",
2026-06-21T01:36:45.0578240Z         "unit",
2026-06-21T01:36:45.0578344Z         "int"
2026-06-21T01:36:45.0578451Z       ],
2026-06-21T01:36:45.0578550Z       "stages": {
2026-06-21T01:36:45.0578664Z         "doc": {
2026-06-21T01:36:45.0578784Z           "complete": false,
2026-06-21T01:36:45.0578889Z           "evidence": []
2026-06-21T01:36:45.0579146Z         },
2026-06-21T01:36:45.0579250Z         "impl": {
2026-06-21T01:36:45.0579371Z           "complete": true,
2026-06-21T01:36:45.0579479Z           "evidence": [
2026-06-21T01:36:45.0579588Z             {
2026-06-21T01:36:45.0579736Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0579848Z               "line": 474
2026-06-21T01:36:45.0579948Z             },
2026-06-21T01:36:45.0580044Z             {
2026-06-21T01:36:45.0580196Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0580306Z               "line": 916
2026-06-21T01:36:45.0580412Z             },
2026-06-21T01:36:45.0580515Z             {
2026-06-21T01:36:45.0580665Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0580774Z               "line": 961
2026-06-21T01:36:45.0580868Z             },
2026-06-21T01:36:45.0580979Z             {
2026-06-21T01:36:45.0581121Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.0581236Z               "line": 986
2026-06-21T01:36:45.0581341Z             },
2026-06-21T01:36:45.0581441Z             {
2026-06-21T01:36:45.0581589Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0581813Z               "line": 1626
2026-06-21T01:36:45.0581924Z             },
2026-06-21T01:36:45.0582013Z             {
2026-06-21T01:36:45.0582166Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0582277Z               "line": 1871
2026-06-21T01:36:45.0582380Z             },
2026-06-21T01:36:45.0582488Z             {
2026-06-21T01:36:45.0582636Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0582754Z               "line": 2002
2026-06-21T01:36:45.0582863Z             },
2026-06-21T01:36:45.0582964Z             {
2026-06-21T01:36:45.0583115Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0583321Z               "line": 2050
2026-06-21T01:36:45.0583421Z             },
2026-06-21T01:36:45.0583527Z             {
2026-06-21T01:36:45.0586184Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0586330Z               "line": 46
2026-06-21T01:36:45.0586441Z             },
2026-06-21T01:36:45.0586565Z             {
2026-06-21T01:36:45.0586723Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0586832Z               "line": 200
2026-06-21T01:36:45.0586936Z             },
2026-06-21T01:36:45.0587033Z             {
2026-06-21T01:36:45.0587184Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.0587285Z               "line": 132
2026-06-21T01:36:45.0587391Z             },
2026-06-21T01:36:45.0587494Z             {
2026-06-21T01:36:45.0587643Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0587749Z               "line": 137
2026-06-21T01:36:45.0587856Z             },
2026-06-21T01:36:45.0587955Z             {
2026-06-21T01:36:45.0588100Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0588213Z               "line": 183
2026-06-21T01:36:45.0588304Z             }
2026-06-21T01:36:45.0588405Z           ]
2026-06-21T01:36:45.0588504Z         },
2026-06-21T01:36:45.0588609Z         "int": {
2026-06-21T01:36:45.0588743Z           "complete": true,
2026-06-21T01:36:45.0588842Z           "evidence": [
2026-06-21T01:36:45.0589034Z             {
2026-06-21T01:36:45.0589205Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T01:36:45.0589321Z               "line": 27
2026-06-21T01:36:45.0589424Z             },
2026-06-21T01:36:45.0589525Z             {
2026-06-21T01:36:45.0589692Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T01:36:45.0589801Z               "line": 148
2026-06-21T01:36:45.0589897Z             },
2026-06-21T01:36:45.0589993Z             {
2026-06-21T01:36:45.0590162Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T01:36:45.0590272Z               "line": 200
2026-06-21T01:36:45.0590380Z             }
2026-06-21T01:36:45.0590494Z           ]
2026-06-21T01:36:45.0590595Z         },
2026-06-21T01:36:45.0590695Z         "unit": {
2026-06-21T01:36:45.0590799Z           "complete": true,
2026-06-21T01:36:45.0590914Z           "evidence": [
2026-06-21T01:36:45.0591010Z             {
2026-06-21T01:36:45.0591161Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0591281Z               "line": 366
2026-06-21T01:36:45.0591385Z             },
2026-06-21T01:36:45.0591491Z             {
2026-06-21T01:36:45.0591634Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0591753Z               "line": 398
2026-06-21T01:36:45.0591844Z             },
2026-06-21T01:36:45.0591953Z             {
2026-06-21T01:36:45.0592101Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T01:36:45.0592212Z               "line": 419
2026-06-21T01:36:45.0592310Z             },
2026-06-21T01:36:45.0592416Z             {
2026-06-21T01:36:45.0592569Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0592683Z               "line": 628
2026-06-21T01:36:45.0592775Z             },
2026-06-21T01:36:45.0592884Z             {
2026-06-21T01:36:45.0593034Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:36:45.0593295Z               "line": 289
2026-06-21T01:36:45.0593394Z             },
2026-06-21T01:36:45.0593505Z             {
2026-06-21T01:36:45.0593652Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T01:36:45.0593762Z               "line": 230
2026-06-21T01:36:45.0593867Z             },
2026-06-21T01:36:45.0593971Z             {
2026-06-21T01:36:45.0594120Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0594225Z               "line": 526
2026-06-21T01:36:45.0594329Z             },
2026-06-21T01:36:45.0594440Z             {
2026-06-21T01:36:45.0594582Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.0594792Z               "line": 556
2026-06-21T01:36:45.0594891Z             }
2026-06-21T01:36:45.0594997Z           ]
2026-06-21T01:36:45.0595102Z         }
2026-06-21T01:36:45.0595202Z       }
2026-06-21T01:36:45.0595307Z     },
2026-06-21T01:36:45.0595399Z     {
2026-06-21T01:36:45.0595563Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T01:36:45.0597430Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T01:36:45.0597559Z       "requiredStages": [
2026-06-21T01:36:45.0597674Z         "doc",
2026-06-21T01:36:45.0597773Z         "impl",
2026-06-21T01:36:45.0597879Z         "unit"
2026-06-21T01:36:45.0597980Z       ],
2026-06-21T01:36:45.0598087Z       "stages": {
2026-06-21T01:36:45.0598194Z         "doc": {
2026-06-21T01:36:45.0598318Z           "complete": true,
2026-06-21T01:36:45.0598430Z           "evidence": [
2026-06-21T01:36:45.0598535Z             {
2026-06-21T01:36:45.0598684Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0598787Z               "line": 314
2026-06-21T01:36:45.0598889Z             }
2026-06-21T01:36:45.0599074Z           ]
2026-06-21T01:36:45.0599184Z         },
2026-06-21T01:36:45.0599285Z         "impl": {
2026-06-21T01:36:45.0599403Z           "complete": true,
2026-06-21T01:36:45.0599508Z           "evidence": [
2026-06-21T01:36:45.0599609Z             {
2026-06-21T01:36:45.0599784Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T01:36:45.0599891Z               "line": 33
2026-06-21T01:36:45.0600009Z             },
2026-06-21T01:36:45.0600114Z             {
2026-06-21T01:36:45.0600281Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T01:36:45.0600399Z               "line": 39
2026-06-21T01:36:45.0600496Z             }
2026-06-21T01:36:45.0600609Z           ]
2026-06-21T01:36:45.0600714Z         },
2026-06-21T01:36:45.0600818Z         "int": {
2026-06-21T01:36:45.0600936Z           "complete": false,
2026-06-21T01:36:45.0601045Z           "evidence": []
2026-06-21T01:36:45.0601145Z         },
2026-06-21T01:36:45.0601256Z         "unit": {
2026-06-21T01:36:45.0601378Z           "complete": true,
2026-06-21T01:36:45.0601479Z           "evidence": [
2026-06-21T01:36:45.0601580Z             {
2026-06-21T01:36:45.0601746Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T01:36:45.0601855Z               "line": 95
2026-06-21T01:36:45.0601950Z             }
2026-06-21T01:36:45.0602046Z           ]
2026-06-21T01:36:45.0602156Z         }
2026-06-21T01:36:45.0602251Z       }
2026-06-21T01:36:45.0602356Z     },
2026-06-21T01:36:45.0602457Z     {
2026-06-21T01:36:45.0602580Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T01:36:45.0605204Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T01:36:45.0605557Z       "requiredStages": [
2026-06-21T01:36:45.0605653Z         "impl",
2026-06-21T01:36:45.0605762Z         "unit"
2026-06-21T01:36:45.0605862Z       ],
2026-06-21T01:36:45.0605978Z       "stages": {
2026-06-21T01:36:45.0606081Z         "doc": {
2026-06-21T01:36:45.0606209Z           "complete": false,
2026-06-21T01:36:45.0606328Z           "evidence": []
2026-06-21T01:36:45.0606431Z         },
2026-06-21T01:36:45.0606540Z         "impl": {
2026-06-21T01:36:45.0606661Z           "complete": true,
2026-06-21T01:36:45.0606774Z           "evidence": [
2026-06-21T01:36:45.0606879Z             {
2026-06-21T01:36:45.0607046Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0607155Z               "line": 488
2026-06-21T01:36:45.0607261Z             }
2026-06-21T01:36:45.0607366Z           ]
2026-06-21T01:36:45.0607470Z         },
2026-06-21T01:36:45.0607571Z         "int": {
2026-06-21T01:36:45.0607700Z           "complete": false,
2026-06-21T01:36:45.0607809Z           "evidence": []
2026-06-21T01:36:45.0607914Z         },
2026-06-21T01:36:45.0608019Z         "unit": {
2026-06-21T01:36:45.0608138Z           "complete": true,
2026-06-21T01:36:45.0608243Z           "evidence": [
2026-06-21T01:36:45.0608343Z             {
2026-06-21T01:36:45.0608516Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0608624Z               "line": 1466
2026-06-21T01:36:45.0608729Z             }
2026-06-21T01:36:45.0608831Z           ]
2026-06-21T01:36:45.0608934Z         }
2026-06-21T01:36:45.0609109Z       }
2026-06-21T01:36:45.0609215Z     },
2026-06-21T01:36:45.0609324Z     {
2026-06-21T01:36:45.0609449Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T01:36:45.0611739Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T01:36:45.0611876Z       "requiredStages": [
2026-06-21T01:36:45.0611981Z         "unit"
2026-06-21T01:36:45.0612078Z       ],
2026-06-21T01:36:45.0612187Z       "stages": {
2026-06-21T01:36:45.0612286Z         "doc": {
2026-06-21T01:36:45.0612402Z           "complete": false,
2026-06-21T01:36:45.0612511Z           "evidence": []
2026-06-21T01:36:45.0612616Z         },
2026-06-21T01:36:45.0612721Z         "impl": {
2026-06-21T01:36:45.0612844Z           "complete": true,
2026-06-21T01:36:45.0612955Z           "evidence": [
2026-06-21T01:36:45.0613064Z             {
2026-06-21T01:36:45.0613192Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0613313Z               "line": 3520
2026-06-21T01:36:45.0613421Z             },
2026-06-21T01:36:45.0613521Z             {
2026-06-21T01:36:45.0613652Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0613870Z               "line": 3572
2026-06-21T01:36:45.0613976Z             },
2026-06-21T01:36:45.0614079Z             {
2026-06-21T01:36:45.0614207Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0614322Z               "line": 3617
2026-06-21T01:36:45.0614424Z             },
2026-06-21T01:36:45.0614529Z             {
2026-06-21T01:36:45.0614673Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0614782Z               "line": 92
2026-06-21T01:36:45.0614882Z             },
2026-06-21T01:36:45.0614987Z             {
2026-06-21T01:36:45.0615153Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0615382Z               "line": 148
2026-06-21T01:36:45.0615478Z             },
2026-06-21T01:36:45.0615584Z             {
2026-06-21T01:36:45.0615721Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0615822Z               "line": 192
2026-06-21T01:36:45.0615927Z             },
2026-06-21T01:36:45.0616040Z             {
2026-06-21T01:36:45.0616171Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0616279Z               "line": 200
2026-06-21T01:36:45.0616379Z             },
2026-06-21T01:36:45.0616485Z             {
2026-06-21T01:36:45.0616622Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0616740Z               "line": 211
2026-06-21T01:36:45.0616846Z             },
2026-06-21T01:36:45.0616934Z             {
2026-06-21T01:36:45.0617076Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0617182Z               "line": 265
2026-06-21T01:36:45.0617282Z             },
2026-06-21T01:36:45.0617386Z             {
2026-06-21T01:36:45.0617516Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0617625Z               "line": 279
2026-06-21T01:36:45.0617725Z             }
2026-06-21T01:36:45.0617830Z           ]
2026-06-21T01:36:45.0617935Z         },
2026-06-21T01:36:45.0618040Z         "int": {
2026-06-21T01:36:45.0618169Z           "complete": false,
2026-06-21T01:36:45.0618269Z           "evidence": []
2026-06-21T01:36:45.0618374Z         },
2026-06-21T01:36:45.0618479Z         "unit": {
2026-06-21T01:36:45.0618589Z           "complete": true,
2026-06-21T01:36:45.0618699Z           "evidence": [
2026-06-21T01:36:45.0618794Z             {
2026-06-21T01:36:45.0619023Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0619128Z               "line": 419
2026-06-21T01:36:45.0619237Z             },
2026-06-21T01:36:45.0619338Z             {
2026-06-21T01:36:45.0619480Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0619584Z               "line": 470
2026-06-21T01:36:45.0619704Z             },
2026-06-21T01:36:45.0619804Z             {
2026-06-21T01:36:45.0619941Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0620052Z               "line": 499
2026-06-21T01:36:45.0620147Z             },
2026-06-21T01:36:45.0620251Z             {
2026-06-21T01:36:45.0620391Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0620504Z               "line": 526
2026-06-21T01:36:45.0620609Z             }
2026-06-21T01:36:45.0620714Z           ]
2026-06-21T01:36:45.0620824Z         }
2026-06-21T01:36:45.0620924Z       }
2026-06-21T01:36:45.0621029Z     },
2026-06-21T01:36:45.0621129Z     {
2026-06-21T01:36:45.0621278Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T01:36:45.0621506Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T01:36:45.0621612Z       "requiredStages": [
2026-06-21T01:36:45.0621720Z         "impl",
2026-06-21T01:36:45.0621824Z         "unit"
2026-06-21T01:36:45.0621924Z       ],
2026-06-21T01:36:45.0622028Z       "stages": {
2026-06-21T01:36:45.0622131Z         "doc": {
2026-06-21T01:36:45.0622261Z           "complete": false,
2026-06-21T01:36:45.0622367Z           "evidence": []
2026-06-21T01:36:45.0622479Z         },
2026-06-21T01:36:45.0622585Z         "impl": {
2026-06-21T01:36:45.0622813Z           "complete": true,
2026-06-21T01:36:45.0622919Z           "evidence": [
2026-06-21T01:36:45.0623029Z             {
2026-06-21T01:36:45.0623201Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0623310Z               "line": 62
2026-06-21T01:36:45.0623414Z             },
2026-06-21T01:36:45.0623515Z             {
2026-06-21T01:36:45.0623667Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0623776Z               "line": 71
2026-06-21T01:36:45.0623878Z             },
2026-06-21T01:36:45.0623991Z             {
2026-06-21T01:36:45.0624145Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0624364Z               "line": 80
2026-06-21T01:36:45.0624469Z             },
2026-06-21T01:36:45.0624574Z             {
2026-06-21T01:36:45.0624734Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0624839Z               "line": 88
2026-06-21T01:36:45.0624947Z             },
2026-06-21T01:36:45.0625061Z             {
2026-06-21T01:36:45.0625204Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0625318Z               "line": 33
2026-06-21T01:36:45.0625418Z             },
2026-06-21T01:36:45.0625515Z             {
2026-06-21T01:36:45.0625666Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0625777Z               "line": 65
2026-06-21T01:36:45.0625881Z             },
2026-06-21T01:36:45.0625990Z             {
2026-06-21T01:36:45.0626130Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0626244Z               "line": 74
2026-06-21T01:36:45.0626348Z             },
2026-06-21T01:36:45.0626468Z             {
2026-06-21T01:36:45.0626615Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0626731Z               "line": 93
2026-06-21T01:36:45.0626835Z             },
2026-06-21T01:36:45.0626939Z             {
2026-06-21T01:36:45.0627089Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0627201Z               "line": 102
2026-06-21T01:36:45.0627310Z             },
2026-06-21T01:36:45.0627420Z             {
2026-06-21T01:36:45.0627561Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0627675Z               "line": 111
2026-06-21T01:36:45.0627781Z             },
2026-06-21T01:36:45.0627885Z             {
2026-06-21T01:36:45.0628029Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0628143Z               "line": 122
2026-06-21T01:36:45.0628242Z             },
2026-06-21T01:36:45.0628349Z             {
2026-06-21T01:36:45.0628491Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0628600Z               "line": 140
2026-06-21T01:36:45.0628706Z             },
2026-06-21T01:36:45.0628801Z             {
2026-06-21T01:36:45.0629012Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0629125Z               "line": 149
2026-06-21T01:36:45.0629229Z             },
2026-06-21T01:36:45.0629340Z             {
2026-06-21T01:36:45.0629482Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0629598Z               "line": 158
2026-06-21T01:36:45.0629697Z             },
2026-06-21T01:36:45.0629797Z             {
2026-06-21T01:36:45.0629942Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0630049Z               "line": 169
2026-06-21T01:36:45.0630158Z             },
2026-06-21T01:36:45.0630254Z             {
2026-06-21T01:36:45.0630397Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0630511Z               "line": 177
2026-06-21T01:36:45.0630617Z             },
2026-06-21T01:36:45.0630726Z             {
2026-06-21T01:36:45.0630864Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0630989Z               "line": 186
2026-06-21T01:36:45.0631083Z             },
2026-06-21T01:36:45.0631188Z             {
2026-06-21T01:36:45.0631332Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0631533Z               "line": 195
2026-06-21T01:36:45.0631646Z             },
2026-06-21T01:36:45.0631742Z             {
2026-06-21T01:36:45.0631890Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0631999Z               "line": 204
2026-06-21T01:36:45.0632104Z             },
2026-06-21T01:36:45.0632215Z             {
2026-06-21T01:36:45.0632346Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0632460Z               "line": 216
2026-06-21T01:36:45.0632565Z             },
2026-06-21T01:36:45.0632668Z             {
2026-06-21T01:36:45.0632802Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0633016Z               "line": 223
2026-06-21T01:36:45.0633131Z             },
2026-06-21T01:36:45.0633226Z             {
2026-06-21T01:36:45.0633368Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0633479Z               "line": 232
2026-06-21T01:36:45.0633589Z             },
2026-06-21T01:36:45.0633697Z             {
2026-06-21T01:36:45.0633832Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0633951Z               "line": 239
2026-06-21T01:36:45.0634056Z             },
2026-06-21T01:36:45.0634161Z             {
2026-06-21T01:36:45.0634294Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0634415Z               "line": 306
2026-06-21T01:36:45.0634518Z             },
2026-06-21T01:36:45.0634618Z             {
2026-06-21T01:36:45.0634762Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0634871Z               "line": 318
2026-06-21T01:36:45.0634976Z             },
2026-06-21T01:36:45.0635082Z             {
2026-06-21T01:36:45.0635223Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0635332Z               "line": 405
2026-06-21T01:36:45.0635437Z             }
2026-06-21T01:36:45.0635540Z           ]
2026-06-21T01:36:45.0635640Z         },
2026-06-21T01:36:45.0635741Z         "int": {
2026-06-21T01:36:45.0635860Z           "complete": false,
2026-06-21T01:36:45.0635973Z           "evidence": []
2026-06-21T01:36:45.0636080Z         },
2026-06-21T01:36:45.0636193Z         "unit": {
2026-06-21T01:36:45.0636318Z           "complete": true,
2026-06-21T01:36:45.0636432Z           "evidence": [
2026-06-21T01:36:45.0636536Z             {
2026-06-21T01:36:45.0636666Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0636784Z               "line": 487
2026-06-21T01:36:45.0636884Z             },
2026-06-21T01:36:45.0636981Z             {
2026-06-21T01:36:45.0637122Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0637233Z               "line": 528
2026-06-21T01:36:45.0637339Z             },
2026-06-21T01:36:45.0637442Z             {
2026-06-21T01:36:45.0637592Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0637710Z               "line": 541
2026-06-21T01:36:45.0637809Z             },
2026-06-21T01:36:45.0637914Z             {
2026-06-21T01:36:45.0638055Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0638164Z               "line": 627
2026-06-21T01:36:45.0638274Z             }
2026-06-21T01:36:45.0638375Z           ]
2026-06-21T01:36:45.0638469Z         }
2026-06-21T01:36:45.0638574Z       }
2026-06-21T01:36:45.0638679Z     },
2026-06-21T01:36:45.0638783Z     {
2026-06-21T01:36:45.0638913Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T01:36:45.0639233Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T01:36:45.0639356Z       "requiredStages": [
2026-06-21T01:36:45.0639465Z         "impl",
2026-06-21T01:36:45.0639572Z         "unit"
2026-06-21T01:36:45.0639685Z       ],
2026-06-21T01:36:45.0639794Z       "stages": {
2026-06-21T01:36:45.0639901Z         "doc": {
2026-06-21T01:36:45.0640019Z           "complete": false,
2026-06-21T01:36:45.0640139Z           "evidence": []
2026-06-21T01:36:45.0640239Z         },
2026-06-21T01:36:45.0640343Z         "impl": {
2026-06-21T01:36:45.0640577Z           "complete": true,
2026-06-21T01:36:45.0640685Z           "evidence": [
2026-06-21T01:36:45.0640790Z             {
2026-06-21T01:36:45.0640934Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.0641047Z               "line": 175
2026-06-21T01:36:45.0641158Z             },
2026-06-21T01:36:45.0641258Z             {
2026-06-21T01:36:45.0641415Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.0641525Z               "line": 171
2026-06-21T01:36:45.0641638Z             }
2026-06-21T01:36:45.0641744Z           ]
2026-06-21T01:36:45.0641849Z         },
2026-06-21T01:36:45.0641958Z         "int": {
2026-06-21T01:36:45.0642178Z           "complete": false,
2026-06-21T01:36:45.0642297Z           "evidence": []
2026-06-21T01:36:45.0642398Z         },
2026-06-21T01:36:45.0642502Z         "unit": {
2026-06-21T01:36:45.0642621Z           "complete": true,
2026-06-21T01:36:45.0642742Z           "evidence": [
2026-06-21T01:36:45.0642849Z             {
2026-06-21T01:36:45.0642992Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.0643106Z               "line": 297
2026-06-21T01:36:45.0643204Z             },
2026-06-21T01:36:45.0643304Z             {
2026-06-21T01:36:45.0643458Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.0643576Z               "line": 836
2026-06-21T01:36:45.0643681Z             },
2026-06-21T01:36:45.0643782Z             {
2026-06-21T01:36:45.0643924Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.0644035Z               "line": 849
2026-06-21T01:36:45.0644134Z             }
2026-06-21T01:36:45.0644225Z           ]
2026-06-21T01:36:45.0644331Z         }
2026-06-21T01:36:45.0644440Z       }
2026-06-21T01:36:45.0644530Z     },
2026-06-21T01:36:45.0644640Z     {
2026-06-21T01:36:45.0644768Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T01:36:45.0644931Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T01:36:45.0645041Z       "requiredStages": [
2026-06-21T01:36:45.0645160Z         "impl",
2026-06-21T01:36:45.0645260Z         "unit"
2026-06-21T01:36:45.0645360Z       ],
2026-06-21T01:36:45.0645469Z       "stages": {
2026-06-21T01:36:45.0645570Z         "doc": {
2026-06-21T01:36:45.0645694Z           "complete": false,
2026-06-21T01:36:45.0645811Z           "evidence": []
2026-06-21T01:36:45.0645921Z         },
2026-06-21T01:36:45.0646034Z         "impl": {
2026-06-21T01:36:45.0646142Z           "complete": true,
2026-06-21T01:36:45.0646253Z           "evidence": [
2026-06-21T01:36:45.0646348Z             {
2026-06-21T01:36:45.0646505Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0646616Z               "line": 116
2026-06-21T01:36:45.0646720Z             },
2026-06-21T01:36:45.0646829Z             {
2026-06-21T01:36:45.0646978Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.0647096Z               "line": 507
2026-06-21T01:36:45.0647192Z             }
2026-06-21T01:36:45.0647302Z           ]
2026-06-21T01:36:45.0647407Z         },
2026-06-21T01:36:45.0647512Z         "int": {
2026-06-21T01:36:45.0647640Z           "complete": false,
2026-06-21T01:36:45.0647749Z           "evidence": []
2026-06-21T01:36:45.0647861Z         },
2026-06-21T01:36:45.0647960Z         "unit": {
2026-06-21T01:36:45.0648079Z           "complete": true,
2026-06-21T01:36:45.0648190Z           "evidence": [
2026-06-21T01:36:45.0648294Z             {
2026-06-21T01:36:45.0648444Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.0648545Z               "line": 541
2026-06-21T01:36:45.0648648Z             }
2026-06-21T01:36:45.0648752Z           ]
2026-06-21T01:36:45.0648863Z         }
2026-06-21T01:36:45.0649033Z       }
2026-06-21T01:36:45.0649134Z     },
2026-06-21T01:36:45.0649234Z     {
2026-06-21T01:36:45.0649387Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T01:36:45.0649592Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T01:36:45.0649840Z       "requiredStages": [
2026-06-21T01:36:45.0649954Z         "impl",
2026-06-21T01:36:45.0650049Z         "unit"
2026-06-21T01:36:45.0650160Z       ],
2026-06-21T01:36:45.0650274Z       "stages": {
2026-06-21T01:36:45.0650369Z         "doc": {
2026-06-21T01:36:45.0650494Z           "complete": false,
2026-06-21T01:36:45.0650603Z           "evidence": []
2026-06-21T01:36:45.0650709Z         },
2026-06-21T01:36:45.0650813Z         "impl": {
2026-06-21T01:36:45.0650936Z           "complete": true,
2026-06-21T01:36:45.0651062Z           "evidence": [
2026-06-21T01:36:45.0651165Z             {
2026-06-21T01:36:45.0651316Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0651531Z               "line": 552
2026-06-21T01:36:45.0651645Z             },
2026-06-21T01:36:45.0651747Z             {
2026-06-21T01:36:45.0651898Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0652009Z               "line": 28
2026-06-21T01:36:45.0652109Z             }
2026-06-21T01:36:45.0652222Z           ]
2026-06-21T01:36:45.0652319Z         },
2026-06-21T01:36:45.0652428Z         "int": {
2026-06-21T01:36:45.0652551Z           "complete": false,
2026-06-21T01:36:45.0652672Z           "evidence": []
2026-06-21T01:36:45.0652781Z         },
2026-06-21T01:36:45.0652881Z         "unit": {
2026-06-21T01:36:45.0653006Z           "complete": true,
2026-06-21T01:36:45.0653114Z           "evidence": [
2026-06-21T01:36:45.0653224Z             {
2026-06-21T01:36:45.0653405Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0653514Z               "line": 229
2026-06-21T01:36:45.0653609Z             }
2026-06-21T01:36:45.0653718Z           ]
2026-06-21T01:36:45.0653822Z         }
2026-06-21T01:36:45.0653926Z       }
2026-06-21T01:36:45.0654028Z     },
2026-06-21T01:36:45.0654117Z     {
2026-06-21T01:36:45.0654251Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T01:36:45.0654422Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T01:36:45.0654551Z       "requiredStages": [],
2026-06-21T01:36:45.0654661Z       "stages": {
2026-06-21T01:36:45.0654770Z         "doc": {
2026-06-21T01:36:45.0654891Z           "complete": false,
2026-06-21T01:36:45.0654995Z           "evidence": []
2026-06-21T01:36:45.0655104Z         },
2026-06-21T01:36:45.0655210Z         "impl": {
2026-06-21T01:36:45.0655319Z           "complete": false,
2026-06-21T01:36:45.0655433Z           "evidence": []
2026-06-21T01:36:45.0655525Z         },
2026-06-21T01:36:45.0655633Z         "int": {
2026-06-21T01:36:45.0655753Z           "complete": false,
2026-06-21T01:36:45.0655869Z           "evidence": []
2026-06-21T01:36:45.0655976Z         },
2026-06-21T01:36:45.0656082Z         "unit": {
2026-06-21T01:36:45.0656202Z           "complete": false,
2026-06-21T01:36:45.0656320Z           "evidence": []
2026-06-21T01:36:45.0656428Z         }
2026-06-21T01:36:45.0656529Z       }
2026-06-21T01:36:45.0656632Z     },
2026-06-21T01:36:45.0656726Z     {
2026-06-21T01:36:45.0656876Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T01:36:45.0657060Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T01:36:45.0657185Z       "requiredStages": [
2026-06-21T01:36:45.0657290Z         "impl",
2026-06-21T01:36:45.0657389Z         "unit"
2026-06-21T01:36:45.0657495Z       ],
2026-06-21T01:36:45.0657600Z       "stages": {
2026-06-21T01:36:45.0657699Z         "doc": {
2026-06-21T01:36:45.0657819Z           "complete": false,
2026-06-21T01:36:45.0657934Z           "evidence": []
2026-06-21T01:36:45.0658038Z         },
2026-06-21T01:36:45.0658139Z         "impl": {
2026-06-21T01:36:45.0658262Z           "complete": true,
2026-06-21T01:36:45.0658387Z           "evidence": [
2026-06-21T01:36:45.0658492Z             {
2026-06-21T01:36:45.0658634Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T01:36:45.0658745Z               "line": 19
2026-06-21T01:36:45.0658844Z             },
2026-06-21T01:36:45.0659014Z             {
2026-06-21T01:36:45.0659298Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0659418Z               "line": 463
2026-06-21T01:36:45.0659523Z             },
2026-06-21T01:36:45.0659627Z             {
2026-06-21T01:36:45.0659776Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0659889Z               "line": 499
2026-06-21T01:36:45.0659995Z             },
2026-06-21T01:36:45.0660100Z             {
2026-06-21T01:36:45.0660242Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0660348Z               "line": 547
2026-06-21T01:36:45.0660447Z             },
2026-06-21T01:36:45.0660552Z             {
2026-06-21T01:36:45.0660791Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0660901Z               "line": 15
2026-06-21T01:36:45.0661006Z             },
2026-06-21T01:36:45.0661110Z             {
2026-06-21T01:36:45.0661259Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0661373Z               "line": 48
2026-06-21T01:36:45.0661483Z             },
2026-06-21T01:36:45.0661584Z             {
2026-06-21T01:36:45.0661726Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0661848Z               "line": 119
2026-06-21T01:36:45.0661944Z             },
2026-06-21T01:36:45.0662045Z             {
2026-06-21T01:36:45.0662187Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0662298Z               "line": 3948
2026-06-21T01:36:45.0662402Z             }
2026-06-21T01:36:45.0662506Z           ]
2026-06-21T01:36:45.0662612Z         },
2026-06-21T01:36:45.0662726Z         "int": {
2026-06-21T01:36:45.0662840Z           "complete": false,
2026-06-21T01:36:45.0662960Z           "evidence": []
2026-06-21T01:36:45.0663060Z         },
2026-06-21T01:36:45.0663164Z         "unit": {
2026-06-21T01:36:45.0663280Z           "complete": true,
2026-06-21T01:36:45.0663398Z           "evidence": [
2026-06-21T01:36:45.0663499Z             {
2026-06-21T01:36:45.0663646Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0663770Z               "line": 765
2026-06-21T01:36:45.0663872Z             },
2026-06-21T01:36:45.0663984Z             {
2026-06-21T01:36:45.0664126Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0664236Z               "line": 165
2026-06-21T01:36:45.0664348Z             },
2026-06-21T01:36:45.0664453Z             {
2026-06-21T01:36:45.0664602Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T01:36:45.0664711Z               "line": 175
2026-06-21T01:36:45.0664816Z             }
2026-06-21T01:36:45.0664921Z           ]
2026-06-21T01:36:45.0665025Z         }
2026-06-21T01:36:45.0665136Z       }
2026-06-21T01:36:45.0665240Z     },
2026-06-21T01:36:45.0665345Z     {
2026-06-21T01:36:45.0665484Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T01:36:45.0666443Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T01:36:45.0666575Z       "requiredStages": [
2026-06-21T01:36:45.0666681Z         "impl",
2026-06-21T01:36:45.0666786Z         "unit"
2026-06-21T01:36:45.0666889Z       ],
2026-06-21T01:36:45.0666998Z       "stages": {
2026-06-21T01:36:45.0667103Z         "doc": {
2026-06-21T01:36:45.0667220Z           "complete": false,
2026-06-21T01:36:45.0667340Z           "evidence": []
2026-06-21T01:36:45.0667445Z         },
2026-06-21T01:36:45.0667545Z         "impl": {
2026-06-21T01:36:45.0667654Z           "complete": true,
2026-06-21T01:36:45.0667774Z           "evidence": [
2026-06-21T01:36:45.0667878Z             {
2026-06-21T01:36:45.0668023Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0668132Z               "line": 192
2026-06-21T01:36:45.0668240Z             },
2026-06-21T01:36:45.0668347Z             {
2026-06-21T01:36:45.0668565Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0668680Z               "line": 279
2026-06-21T01:36:45.0668784Z             }
2026-06-21T01:36:45.0668889Z           ]
2026-06-21T01:36:45.0669085Z         },
2026-06-21T01:36:45.0669190Z         "int": {
2026-06-21T01:36:45.0669320Z           "complete": false,
2026-06-21T01:36:45.0669432Z           "evidence": []
2026-06-21T01:36:45.0669536Z         },
2026-06-21T01:36:45.0669646Z         "unit": {
2026-06-21T01:36:45.0669763Z           "complete": true,
2026-06-21T01:36:45.0669877Z           "evidence": [
2026-06-21T01:36:45.0669983Z             {
2026-06-21T01:36:45.0670135Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0670350Z               "line": 470
2026-06-21T01:36:45.0672819Z             },
2026-06-21T01:36:45.0672944Z             {
2026-06-21T01:36:45.0673105Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.0673229Z               "line": 526
2026-06-21T01:36:45.0673338Z             }
2026-06-21T01:36:45.0673439Z           ]
2026-06-21T01:36:45.0673544Z         }
2026-06-21T01:36:45.0673634Z       }
2026-06-21T01:36:45.0673720Z     },
2026-06-21T01:36:45.0673826Z     {
2026-06-21T01:36:45.0673972Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T01:36:45.0678147Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T01:36:45.0678310Z       "requiredStages": [
2026-06-21T01:36:45.0678428Z         "impl",
2026-06-21T01:36:45.0678529Z         "unit",
2026-06-21T01:36:45.0678630Z         "int"
2026-06-21T01:36:45.0678734Z       ],
2026-06-21T01:36:45.0678844Z       "stages": {
2026-06-21T01:36:45.0679025Z         "doc": {
2026-06-21T01:36:45.0679139Z           "complete": false,
2026-06-21T01:36:45.0679260Z           "evidence": []
2026-06-21T01:36:45.0679363Z         },
2026-06-21T01:36:45.0679468Z         "impl": {
2026-06-21T01:36:45.0679593Z           "complete": true,
2026-06-21T01:36:45.0679697Z           "evidence": [
2026-06-21T01:36:45.0679793Z             {
2026-06-21T01:36:45.0679964Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0680077Z               "line": 116
2026-06-21T01:36:45.0680183Z             },
2026-06-21T01:36:45.0680286Z             {
2026-06-21T01:36:45.0680447Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.0680548Z               "line": 132
2026-06-21T01:36:45.0680657Z             },
2026-06-21T01:36:45.0680767Z             {
2026-06-21T01:36:45.0680925Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.0681029Z               "line": 434
2026-06-21T01:36:45.0681145Z             },
2026-06-21T01:36:45.0681249Z             {
2026-06-21T01:36:45.0681401Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0681649Z               "line": 139
2026-06-21T01:36:45.0681749Z             },
2026-06-21T01:36:45.0681854Z             {
2026-06-21T01:36:45.0682016Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0682122Z               "line": 326
2026-06-21T01:36:45.0682226Z             },
2026-06-21T01:36:45.0682326Z             {
2026-06-21T01:36:45.0682479Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0682593Z               "line": 555
2026-06-21T01:36:45.0682689Z             }
2026-06-21T01:36:45.0682794Z           ]
2026-06-21T01:36:45.0682888Z         },
2026-06-21T01:36:45.0682997Z         "int": {
2026-06-21T01:36:45.0683222Z           "complete": true,
2026-06-21T01:36:45.0683326Z           "evidence": [
2026-06-21T01:36:45.0683418Z             {
2026-06-21T01:36:45.0683602Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T01:36:45.0683723Z               "line": 32
2026-06-21T01:36:45.0683833Z             }
2026-06-21T01:36:45.0683941Z           ]
2026-06-21T01:36:45.0684047Z         },
2026-06-21T01:36:45.0684156Z         "unit": {
2026-06-21T01:36:45.0684275Z           "complete": true,
2026-06-21T01:36:45.0684372Z           "evidence": [
2026-06-21T01:36:45.0684480Z             {
2026-06-21T01:36:45.0684634Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0684753Z               "line": 625
2026-06-21T01:36:45.0684857Z             },
2026-06-21T01:36:45.0684963Z             {
2026-06-21T01:36:45.0685114Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0685232Z               "line": 646
2026-06-21T01:36:45.0685337Z             },
2026-06-21T01:36:45.0685431Z             {
2026-06-21T01:36:45.0685583Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0685693Z               "line": 662
2026-06-21T01:36:45.0685797Z             },
2026-06-21T01:36:45.0685902Z             {
2026-06-21T01:36:45.0686061Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0686179Z               "line": 680
2026-06-21T01:36:45.0686275Z             },
2026-06-21T01:36:45.0686380Z             {
2026-06-21T01:36:45.0686537Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0686656Z               "line": 704
2026-06-21T01:36:45.0686756Z             }
2026-06-21T01:36:45.0686861Z           ]
2026-06-21T01:36:45.0686976Z         }
2026-06-21T01:36:45.0687080Z       }
2026-06-21T01:36:45.0687186Z     },
2026-06-21T01:36:45.0687286Z     {
2026-06-21T01:36:45.0687414Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T01:36:45.0687606Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T01:36:45.0687724Z       "requiredStages": [
2026-06-21T01:36:45.0687835Z         "impl",
2026-06-21T01:36:45.0687944Z         "unit"
2026-06-21T01:36:45.0688047Z       ],
2026-06-21T01:36:45.0688152Z       "stages": {
2026-06-21T01:36:45.0688257Z         "doc": {
2026-06-21T01:36:45.0688378Z           "complete": false,
2026-06-21T01:36:45.0688498Z           "evidence": []
2026-06-21T01:36:45.0688609Z         },
2026-06-21T01:36:45.0688712Z         "impl": {
2026-06-21T01:36:45.0688833Z           "complete": true,
2026-06-21T01:36:45.0688933Z           "evidence": [
2026-06-21T01:36:45.0689114Z             {
2026-06-21T01:36:45.0689252Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0689365Z               "line": 35
2026-06-21T01:36:45.0689476Z             }
2026-06-21T01:36:45.0689566Z           ]
2026-06-21T01:36:45.0689676Z         },
2026-06-21T01:36:45.0689777Z         "int": {
2026-06-21T01:36:45.0689900Z           "complete": false,
2026-06-21T01:36:45.0690024Z           "evidence": []
2026-06-21T01:36:45.0690120Z         },
2026-06-21T01:36:45.0690228Z         "unit": {
2026-06-21T01:36:45.0690343Z           "complete": true,
2026-06-21T01:36:45.0690450Z           "evidence": [
2026-06-21T01:36:45.0690552Z             {
2026-06-21T01:36:45.0690823Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T01:36:45.0690936Z               "line": 220
2026-06-21T01:36:45.0691031Z             }
2026-06-21T01:36:45.0691137Z           ]
2026-06-21T01:36:45.0691241Z         }
2026-06-21T01:36:45.0691351Z       }
2026-06-21T01:36:45.0691452Z     },
2026-06-21T01:36:45.0691551Z     {
2026-06-21T01:36:45.0691700Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T01:36:45.0695069Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T01:36:45.0695331Z       "requiredStages": [
2026-06-21T01:36:45.0695436Z         "impl",
2026-06-21T01:36:45.0695538Z         "unit",
2026-06-21T01:36:45.0695650Z         "int"
2026-06-21T01:36:45.0695759Z       ],
2026-06-21T01:36:45.0695869Z       "stages": {
2026-06-21T01:36:45.0695977Z         "doc": {
2026-06-21T01:36:45.0696100Z           "complete": false,
2026-06-21T01:36:45.0696205Z           "evidence": []
2026-06-21T01:36:45.0696306Z         },
2026-06-21T01:36:45.0696419Z         "impl": {
2026-06-21T01:36:45.0696540Z           "complete": true,
2026-06-21T01:36:45.0696649Z           "evidence": [
2026-06-21T01:36:45.0696748Z             {
2026-06-21T01:36:45.0696921Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0697029Z               "line": 202
2026-06-21T01:36:45.0697131Z             },
2026-06-21T01:36:45.0697235Z             {
2026-06-21T01:36:45.0697388Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:36:45.0697503Z               "line": 107
2026-06-21T01:36:45.0697608Z             },
2026-06-21T01:36:45.0697707Z             {
2026-06-21T01:36:45.0697856Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:36:45.0697979Z               "line": 138
2026-06-21T01:36:45.0698081Z             },
2026-06-21T01:36:45.0698180Z             {
2026-06-21T01:36:45.0698342Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0698462Z               "line": 209
2026-06-21T01:36:45.0698569Z             },
2026-06-21T01:36:45.0698669Z             {
2026-06-21T01:36:45.0698817Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0698929Z               "line": 246
2026-06-21T01:36:45.0699121Z             },
2026-06-21T01:36:45.0699229Z             {
2026-06-21T01:36:45.0699383Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0699493Z               "line": 379
2026-06-21T01:36:45.0699601Z             }
2026-06-21T01:36:45.0699703Z           ]
2026-06-21T01:36:45.0699807Z         },
2026-06-21T01:36:45.0699911Z         "int": {
2026-06-21T01:36:45.0700036Z           "complete": true,
2026-06-21T01:36:45.0700160Z           "evidence": [
2026-06-21T01:36:45.0700265Z             {
2026-06-21T01:36:45.0700441Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T01:36:45.0700545Z               "line": 17
2026-06-21T01:36:45.0700647Z             }
2026-06-21T01:36:45.0700756Z           ]
2026-06-21T01:36:45.0700971Z         },
2026-06-21T01:36:45.0701084Z         "unit": {
2026-06-21T01:36:45.0701198Z           "complete": true,
2026-06-21T01:36:45.0701317Z           "evidence": [
2026-06-21T01:36:45.0701420Z             {
2026-06-21T01:36:45.0701572Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0701683Z               "line": 982
2026-06-21T01:36:45.0701777Z             }
2026-06-21T01:36:45.0701882Z           ]
2026-06-21T01:36:45.0701983Z         }
2026-06-21T01:36:45.0702092Z       }
2026-06-21T01:36:45.0702192Z     },
2026-06-21T01:36:45.0702298Z     {
2026-06-21T01:36:45.0702430Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T01:36:45.0702845Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T01:36:45.0702970Z       "requiredStages": [
2026-06-21T01:36:45.0703074Z         "impl",
2026-06-21T01:36:45.0703175Z         "unit"
2026-06-21T01:36:45.0703275Z       ],
2026-06-21T01:36:45.0703384Z       "stages": {
2026-06-21T01:36:45.0703495Z         "doc": {
2026-06-21T01:36:45.0703618Z           "complete": false,
2026-06-21T01:36:45.0703742Z           "evidence": []
2026-06-21T01:36:45.0703848Z         },
2026-06-21T01:36:45.0703952Z         "impl": {
2026-06-21T01:36:45.0704070Z           "complete": true,
2026-06-21T01:36:45.0704185Z           "evidence": [
2026-06-21T01:36:45.0704290Z             {
2026-06-21T01:36:45.0704446Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.0704562Z               "line": 405
2026-06-21T01:36:45.0704661Z             },
2026-06-21T01:36:45.0704766Z             {
2026-06-21T01:36:45.0704914Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.0705038Z               "line": 409
2026-06-21T01:36:45.0705144Z             },
2026-06-21T01:36:45.0705248Z             {
2026-06-21T01:36:45.0705395Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.0705510Z               "line": 156
2026-06-21T01:36:45.0705625Z             }
2026-06-21T01:36:45.0705725Z           ]
2026-06-21T01:36:45.0705825Z         },
2026-06-21T01:36:45.0705929Z         "int": {
2026-06-21T01:36:45.0706054Z           "complete": false,
2026-06-21T01:36:45.0706168Z           "evidence": []
2026-06-21T01:36:45.0706267Z         },
2026-06-21T01:36:45.0706376Z         "unit": {
2026-06-21T01:36:45.0706491Z           "complete": true,
2026-06-21T01:36:45.0706603Z           "evidence": [
2026-06-21T01:36:45.0706698Z             {
2026-06-21T01:36:45.0706843Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.0706960Z               "line": 865
2026-06-21T01:36:45.0707066Z             },
2026-06-21T01:36:45.0707161Z             {
2026-06-21T01:36:45.0707308Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.0707424Z               "line": 879
2026-06-21T01:36:45.0707524Z             },
2026-06-21T01:36:45.0707662Z             {
2026-06-21T01:36:45.0707814Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.0707919Z               "line": 898
2026-06-21T01:36:45.0708025Z             },
2026-06-21T01:36:45.0708129Z             {
2026-06-21T01:36:45.0708267Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.0708383Z               "line": 915
2026-06-21T01:36:45.0708481Z             },
2026-06-21T01:36:45.0708592Z             {
2026-06-21T01:36:45.0708754Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:36:45.0708868Z               "line": 441
2026-06-21T01:36:45.0709041Z             }
2026-06-21T01:36:45.0709139Z           ]
2026-06-21T01:36:45.0709239Z         }
2026-06-21T01:36:45.0709353Z       }
2026-06-21T01:36:45.0709456Z     },
2026-06-21T01:36:45.0709551Z     {
2026-06-21T01:36:45.0709700Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T01:36:45.0720164Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T01:36:45.0720566Z       "requiredStages": [
2026-06-21T01:36:45.0720684Z         "doc",
2026-06-21T01:36:45.0720779Z         "impl",
2026-06-21T01:36:45.0720885Z         "unit",
2026-06-21T01:36:45.0720989Z         "int"
2026-06-21T01:36:45.0721085Z       ],
2026-06-21T01:36:45.0721195Z       "stages": {
2026-06-21T01:36:45.0721299Z         "doc": {
2026-06-21T01:36:45.0721409Z           "complete": true,
2026-06-21T01:36:45.0721524Z           "evidence": [
2026-06-21T01:36:45.0721633Z             {
2026-06-21T01:36:45.0721753Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.0721862Z               "line": 420
2026-06-21T01:36:45.0721972Z             },
2026-06-21T01:36:45.0722073Z             {
2026-06-21T01:36:45.0722219Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0722332Z               "line": 402
2026-06-21T01:36:45.0722437Z             }
2026-06-21T01:36:45.0722541Z           ]
2026-06-21T01:36:45.0722645Z         },
2026-06-21T01:36:45.0722755Z         "impl": {
2026-06-21T01:36:45.0722865Z           "complete": true,
2026-06-21T01:36:45.0723051Z           "evidence": [
2026-06-21T01:36:45.0723155Z             {
2026-06-21T01:36:45.0723312Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0723418Z               "line": 797
2026-06-21T01:36:45.0723523Z             },
2026-06-21T01:36:45.0723632Z             {
2026-06-21T01:36:45.0723780Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0723884Z               "line": 822
2026-06-21T01:36:45.0723990Z             },
2026-06-21T01:36:45.0724100Z             {
2026-06-21T01:36:45.0724237Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0724447Z               "line": 839
2026-06-21T01:36:45.0724552Z             },
2026-06-21T01:36:45.0724658Z             {
2026-06-21T01:36:45.0724809Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0724920Z               "line": 854
2026-06-21T01:36:45.0725031Z             },
2026-06-21T01:36:45.0725138Z             {
2026-06-21T01:36:45.0725295Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0725411Z               "line": 874
2026-06-21T01:36:45.0725505Z             },
2026-06-21T01:36:45.0725605Z             {
2026-06-21T01:36:45.0725740Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0725858Z               "line": 964
2026-06-21T01:36:45.0725964Z             },
2026-06-21T01:36:45.0726068Z             {
2026-06-21T01:36:45.0726206Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0726321Z               "line": 1016
2026-06-21T01:36:45.0726425Z             },
2026-06-21T01:36:45.0726525Z             {
2026-06-21T01:36:45.0726692Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0726802Z               "line": 1075
2026-06-21T01:36:45.0726898Z             },
2026-06-21T01:36:45.0727002Z             {
2026-06-21T01:36:45.0727155Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.0727284Z               "line": 527
2026-06-21T01:36:45.0727378Z             }
2026-06-21T01:36:45.0727487Z           ]
2026-06-21T01:36:45.0727588Z         },
2026-06-21T01:36:45.0727695Z         "int": {
2026-06-21T01:36:45.0727819Z           "complete": true,
2026-06-21T01:36:45.0727925Z           "evidence": [
2026-06-21T01:36:45.0728029Z             {
2026-06-21T01:36:45.0728177Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:36:45.0728296Z               "line": 35
2026-06-21T01:36:45.0728400Z             },
2026-06-21T01:36:45.0728502Z             {
2026-06-21T01:36:45.0728662Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:36:45.0728778Z               "line": 559
2026-06-21T01:36:45.0728882Z             },
2026-06-21T01:36:45.0729068Z             {
2026-06-21T01:36:45.0729216Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:36:45.0729330Z               "line": 580
2026-06-21T01:36:45.0729436Z             }
2026-06-21T01:36:45.0729540Z           ]
2026-06-21T01:36:45.0729641Z         },
2026-06-21T01:36:45.0729746Z         "unit": {
2026-06-21T01:36:45.0729865Z           "complete": true,
2026-06-21T01:36:45.0729970Z           "evidence": [
2026-06-21T01:36:45.0730075Z             {
2026-06-21T01:36:45.0730222Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0730340Z               "line": 1202
2026-06-21T01:36:45.0730431Z             },
2026-06-21T01:36:45.0730534Z             {
2026-06-21T01:36:45.0730681Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0730797Z               "line": 1246
2026-06-21T01:36:45.0730896Z             },
2026-06-21T01:36:45.0731005Z             {
2026-06-21T01:36:45.0731154Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0731268Z               "line": 1260
2026-06-21T01:36:45.0731379Z             },
2026-06-21T01:36:45.0731478Z             {
2026-06-21T01:36:45.0731630Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0731855Z               "line": 1278
2026-06-21T01:36:45.0731964Z             },
2026-06-21T01:36:45.0732069Z             {
2026-06-21T01:36:45.0732212Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0732323Z               "line": 1302
2026-06-21T01:36:45.0732432Z             },
2026-06-21T01:36:45.0732532Z             {
2026-06-21T01:36:45.0732685Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0732793Z               "line": 1529
2026-06-21T01:36:45.0732897Z             }
2026-06-21T01:36:45.0733002Z           ]
2026-06-21T01:36:45.0733110Z         }
2026-06-21T01:36:45.0733306Z       }
2026-06-21T01:36:45.0733407Z     },
2026-06-21T01:36:45.0733510Z     {
2026-06-21T01:36:45.0733645Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T01:36:45.0735962Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T01:36:45.0736093Z       "requiredStages": [
2026-06-21T01:36:45.0736199Z         "unit",
2026-06-21T01:36:45.0736309Z         "int"
2026-06-21T01:36:45.0736413Z       ],
2026-06-21T01:36:45.0736524Z       "stages": {
2026-06-21T01:36:45.0736633Z         "doc": {
2026-06-21T01:36:45.0736742Z           "complete": true,
2026-06-21T01:36:45.0736858Z           "evidence": [
2026-06-21T01:36:45.0736957Z             {
2026-06-21T01:36:45.0737105Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0737215Z               "line": 381
2026-06-21T01:36:45.0737324Z             }
2026-06-21T01:36:45.0737430Z           ]
2026-06-21T01:36:45.0737534Z         },
2026-06-21T01:36:45.0737643Z         "impl": {
2026-06-21T01:36:45.0737754Z           "complete": true,
2026-06-21T01:36:45.0737877Z           "evidence": [
2026-06-21T01:36:45.0737967Z             {
2026-06-21T01:36:45.0738114Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0738231Z               "line": 100
2026-06-21T01:36:45.0738331Z             }
2026-06-21T01:36:45.0738437Z           ]
2026-06-21T01:36:45.0738546Z         },
2026-06-21T01:36:45.0738651Z         "int": {
2026-06-21T01:36:45.0738771Z           "complete": true,
2026-06-21T01:36:45.0738885Z           "evidence": [
2026-06-21T01:36:45.0739076Z             {
2026-06-21T01:36:45.0739223Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0739343Z               "line": 1042
2026-06-21T01:36:45.0739447Z             }
2026-06-21T01:36:45.0739547Z           ]
2026-06-21T01:36:45.0739647Z         },
2026-06-21T01:36:45.0739753Z         "unit": {
2026-06-21T01:36:45.0739876Z           "complete": true,
2026-06-21T01:36:45.0739977Z           "evidence": [
2026-06-21T01:36:45.0740086Z             {
2026-06-21T01:36:45.0740234Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.0740355Z               "line": 2217
2026-06-21T01:36:45.0740448Z             }
2026-06-21T01:36:45.0740554Z           ]
2026-06-21T01:36:45.0740665Z         }
2026-06-21T01:36:45.0740763Z       }
2026-06-21T01:36:45.0740876Z     },
2026-06-21T01:36:45.0740972Z     {
2026-06-21T01:36:45.0741117Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T01:36:45.0741991Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T01:36:45.0742224Z       "requiredStages": [
2026-06-21T01:36:45.0742329Z         "doc",
2026-06-21T01:36:45.0742429Z         "impl",
2026-06-21T01:36:45.0742539Z         "unit"
2026-06-21T01:36:45.0742639Z       ],
2026-06-21T01:36:45.0742743Z       "stages": {
2026-06-21T01:36:45.0742854Z         "doc": {
2026-06-21T01:36:45.0742959Z           "complete": true,
2026-06-21T01:36:45.0743067Z           "evidence": [
2026-06-21T01:36:45.0743164Z             {
2026-06-21T01:36:45.0743311Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0743410Z               "line": 366
2026-06-21T01:36:45.0743624Z             }
2026-06-21T01:36:45.0743722Z           ]
2026-06-21T01:36:45.0743822Z         },
2026-06-21T01:36:45.0743933Z         "impl": {
2026-06-21T01:36:45.0744047Z           "complete": true,
2026-06-21T01:36:45.0744161Z           "evidence": [
2026-06-21T01:36:45.0744262Z             {
2026-06-21T01:36:45.0744418Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.0744524Z               "line": 87
2026-06-21T01:36:45.0744629Z             },
2026-06-21T01:36:45.0744737Z             {
2026-06-21T01:36:45.0744877Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0744986Z               "line": 105
2026-06-21T01:36:45.0745081Z             },
2026-06-21T01:36:45.0745182Z             {
2026-06-21T01:36:45.0745339Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.0745440Z               "line": 55
2026-06-21T01:36:45.0745549Z             },
2026-06-21T01:36:45.0745654Z             {
2026-06-21T01:36:45.0745817Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.0745920Z               "line": 31
2026-06-21T01:36:45.0746026Z             },
2026-06-21T01:36:45.0746131Z             {
2026-06-21T01:36:45.0746282Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.0746391Z               "line": 446
2026-06-21T01:36:45.0746492Z             },
2026-06-21T01:36:45.0746601Z             {
2026-06-21T01:36:45.0746754Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.0746869Z               "line": 95
2026-06-21T01:36:45.0746982Z             },
2026-06-21T01:36:45.0747084Z             {
2026-06-21T01:36:45.0747236Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.0747345Z               "line": 29
2026-06-21T01:36:45.0747451Z             },
2026-06-21T01:36:45.0747555Z             {
2026-06-21T01:36:45.0747708Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.0747822Z               "line": 104
2026-06-21T01:36:45.0747931Z             },
2026-06-21T01:36:45.0748028Z             {
2026-06-21T01:36:45.0748194Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0748314Z               "line": 208
2026-06-21T01:36:45.0748400Z             },
2026-06-21T01:36:45.0748503Z             {
2026-06-21T01:36:45.0748655Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:36:45.0748760Z               "line": 28
2026-06-21T01:36:45.0748863Z             },
2026-06-21T01:36:45.0749030Z             {
2026-06-21T01:36:45.0749192Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:36:45.0749302Z               "line": 74
2026-06-21T01:36:45.0749412Z             },
2026-06-21T01:36:45.0749516Z             {
2026-06-21T01:36:45.0749665Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:36:45.0749774Z               "line": 32
2026-06-21T01:36:45.0749869Z             },
2026-06-21T01:36:45.0749975Z             {
2026-06-21T01:36:45.0750121Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0750237Z               "line": 40
2026-06-21T01:36:45.0750337Z             },
2026-06-21T01:36:45.0750441Z             {
2026-06-21T01:36:45.0750585Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0750794Z               "line": 184
2026-06-21T01:36:45.0750900Z             },
2026-06-21T01:36:45.0751008Z             {
2026-06-21T01:36:45.0751152Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.0751258Z               "line": 61
2026-06-21T01:36:45.0751351Z             },
2026-06-21T01:36:45.0751455Z             {
2026-06-21T01:36:45.0751599Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.0751716Z               "line": 131
2026-06-21T01:36:45.0751826Z             },
2026-06-21T01:36:45.0751926Z             {
2026-06-21T01:36:45.0752073Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.0752189Z               "line": 223
2026-06-21T01:36:45.0752397Z             },
2026-06-21T01:36:45.0752489Z             {
2026-06-21T01:36:45.0752641Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:36:45.0752750Z               "line": 37
2026-06-21T01:36:45.0752847Z             },
2026-06-21T01:36:45.0752951Z             {
2026-06-21T01:36:45.0753109Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.0753232Z               "line": 38
2026-06-21T01:36:45.0753332Z             },
2026-06-21T01:36:45.0753443Z             {
2026-06-21T01:36:45.0753594Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:36:45.0753699Z               "line": 36
2026-06-21T01:36:45.0753806Z             },
2026-06-21T01:36:45.0753904Z             {
2026-06-21T01:36:45.0754046Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:36:45.0754151Z               "line": 40
2026-06-21T01:36:45.0754249Z             }
2026-06-21T01:36:45.0754358Z           ]
2026-06-21T01:36:45.0754469Z         },
2026-06-21T01:36:45.0754569Z         "int": {
2026-06-21T01:36:45.0754693Z           "complete": false,
2026-06-21T01:36:45.0754798Z           "evidence": []
2026-06-21T01:36:45.0754902Z         },
2026-06-21T01:36:45.0755007Z         "unit": {
2026-06-21T01:36:45.0755127Z           "complete": true,
2026-06-21T01:36:45.0755241Z           "evidence": [
2026-06-21T01:36:45.0755346Z             {
2026-06-21T01:36:45.0755489Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.0755612Z               "line": 212
2026-06-21T01:36:45.0755714Z             },
2026-06-21T01:36:45.0755818Z             {
2026-06-21T01:36:45.0755980Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T01:36:45.0756090Z               "line": 136
2026-06-21T01:36:45.0756195Z             },
2026-06-21T01:36:45.0756295Z             {
2026-06-21T01:36:45.0756461Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:36:45.0756562Z               "line": 685
2026-06-21T01:36:45.0756682Z             },
2026-06-21T01:36:45.0756790Z             {
2026-06-21T01:36:45.0756937Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:36:45.0757057Z               "line": 224
2026-06-21T01:36:45.0757162Z             },
2026-06-21T01:36:45.0757261Z             {
2026-06-21T01:36:45.0757410Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:36:45.0757518Z               "line": 206
2026-06-21T01:36:45.0757625Z             },
2026-06-21T01:36:45.0757729Z             {
2026-06-21T01:36:45.0757882Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:36:45.0757982Z               "line": 112
2026-06-21T01:36:45.0758082Z             },
2026-06-21T01:36:45.0758186Z             {
2026-06-21T01:36:45.0758335Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:36:45.0758454Z               "line": 157
2026-06-21T01:36:45.0758555Z             },
2026-06-21T01:36:45.0758660Z             {
2026-06-21T01:36:45.0758811Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.0758927Z               "line": 215
2026-06-21T01:36:45.0759116Z             },
2026-06-21T01:36:45.0759220Z             {
2026-06-21T01:36:45.0759371Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:36:45.0759475Z               "line": 141
2026-06-21T01:36:45.0759695Z             },
2026-06-21T01:36:45.0759795Z             {
2026-06-21T01:36:45.0759943Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:36:45.0760043Z               "line": 162
2026-06-21T01:36:45.0760153Z             }
2026-06-21T01:36:45.0760253Z           ]
2026-06-21T01:36:45.0760358Z         }
2026-06-21T01:36:45.0760463Z       }
2026-06-21T01:36:45.0760568Z     },
2026-06-21T01:36:45.0760672Z     {
2026-06-21T01:36:45.0760821Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T01:36:45.0762810Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T01:36:45.0763059Z       "requiredStages": [
2026-06-21T01:36:45.0763163Z         "doc",
2026-06-21T01:36:45.0763272Z         "impl",
2026-06-21T01:36:45.0763368Z         "unit",
2026-06-21T01:36:45.0763472Z         "int"
2026-06-21T01:36:45.0763573Z       ],
2026-06-21T01:36:45.0763678Z       "stages": {
2026-06-21T01:36:45.0763787Z         "doc": {
2026-06-21T01:36:45.0763902Z           "complete": true,
2026-06-21T01:36:45.0764008Z           "evidence": [
2026-06-21T01:36:45.0764121Z             {
2026-06-21T01:36:45.0764260Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.0764366Z               "line": 250
2026-06-21T01:36:45.0764469Z             }
2026-06-21T01:36:45.0764572Z           ]
2026-06-21T01:36:45.0764678Z         },
2026-06-21T01:36:45.0764781Z         "impl": {
2026-06-21T01:36:45.0764909Z           "complete": true,
2026-06-21T01:36:45.0765010Z           "evidence": [
2026-06-21T01:36:45.0765115Z             {
2026-06-21T01:36:45.0765253Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:36:45.0765368Z               "line": 135
2026-06-21T01:36:45.0765462Z             },
2026-06-21T01:36:45.0765562Z             {
2026-06-21T01:36:45.0765706Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:36:45.0765815Z               "line": 157
2026-06-21T01:36:45.0765921Z             }
2026-06-21T01:36:45.0766025Z           ]
2026-06-21T01:36:45.0766130Z         },
2026-06-21T01:36:45.0766235Z         "int": {
2026-06-21T01:36:45.0766359Z           "complete": true,
2026-06-21T01:36:45.0766473Z           "evidence": [
2026-06-21T01:36:45.0766575Z             {
2026-06-21T01:36:45.0766721Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T01:36:45.0766831Z               "line": 15
2026-06-21T01:36:45.0766937Z             }
2026-06-21T01:36:45.0767050Z           ]
2026-06-21T01:36:45.0767146Z         },
2026-06-21T01:36:45.0767257Z         "unit": {
2026-06-21T01:36:45.0767364Z           "complete": true,
2026-06-21T01:36:45.0767483Z           "evidence": [
2026-06-21T01:36:45.0767584Z             {
2026-06-21T01:36:45.0767736Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T01:36:45.0767841Z               "line": 233
2026-06-21T01:36:45.0767942Z             }
2026-06-21T01:36:45.0768041Z           ]
2026-06-21T01:36:45.0768141Z         }
2026-06-21T01:36:45.0768242Z       }
2026-06-21T01:36:45.0768342Z     },
2026-06-21T01:36:45.0768447Z     {
2026-06-21T01:36:45.0768590Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T01:36:45.0768785Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T01:36:45.0768914Z       "requiredStages": [
2026-06-21T01:36:45.0769095Z         "impl",
2026-06-21T01:36:45.0769200Z         "unit"
2026-06-21T01:36:45.0769304Z       ],
2026-06-21T01:36:45.0769520Z       "stages": {
2026-06-21T01:36:45.0769628Z         "doc": {
2026-06-21T01:36:45.0769747Z           "complete": false,
2026-06-21T01:36:45.0769870Z           "evidence": []
2026-06-21T01:36:45.0769973Z         },
2026-06-21T01:36:45.0770074Z         "impl": {
2026-06-21T01:36:45.0770189Z           "complete": true,
2026-06-21T01:36:45.0770302Z           "evidence": [
2026-06-21T01:36:45.0770408Z             {
2026-06-21T01:36:45.0770551Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.0770665Z               "line": 95
2026-06-21T01:36:45.0770766Z             },
2026-06-21T01:36:45.0770866Z             {
2026-06-21T01:36:45.0771123Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0771247Z               "line": 117
2026-06-21T01:36:45.0771357Z             }
2026-06-21T01:36:45.0771457Z           ]
2026-06-21T01:36:45.0771557Z         },
2026-06-21T01:36:45.0771662Z         "int": {
2026-06-21T01:36:45.0771786Z           "complete": false,
2026-06-21T01:36:45.0771905Z           "evidence": []
2026-06-21T01:36:45.0772002Z         },
2026-06-21T01:36:45.0772110Z         "unit": {
2026-06-21T01:36:45.0772224Z           "complete": true,
2026-06-21T01:36:45.0772340Z           "evidence": [
2026-06-21T01:36:45.0772444Z             {
2026-06-21T01:36:45.0774992Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.0775142Z               "line": 250
2026-06-21T01:36:45.0775253Z             },
2026-06-21T01:36:45.0775355Z             {
2026-06-21T01:36:45.0775517Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.0775628Z               "line": 412
2026-06-21T01:36:45.0775736Z             },
2026-06-21T01:36:45.0775842Z             {
2026-06-21T01:36:45.0775999Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0776113Z               "line": 611
2026-06-21T01:36:45.0776214Z             },
2026-06-21T01:36:45.0776323Z             {
2026-06-21T01:36:45.0776476Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0776585Z               "line": 669
2026-06-21T01:36:45.0776690Z             }
2026-06-21T01:36:45.0776791Z           ]
2026-06-21T01:36:45.0776891Z         }
2026-06-21T01:36:45.0776991Z       }
2026-06-21T01:36:45.0777081Z     },
2026-06-21T01:36:45.0777187Z     {
2026-06-21T01:36:45.0777320Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T01:36:45.0780136Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T01:36:45.0780297Z       "requiredStages": [
2026-06-21T01:36:45.0780416Z         "impl",
2026-06-21T01:36:45.0780515Z         "unit",
2026-06-21T01:36:45.0780629Z         "int"
2026-06-21T01:36:45.0780726Z       ],
2026-06-21T01:36:45.0780830Z       "stages": {
2026-06-21T01:36:45.0780943Z         "doc": {
2026-06-21T01:36:45.0781069Z           "complete": false,
2026-06-21T01:36:45.0781215Z           "evidence": []
2026-06-21T01:36:45.0781321Z         },
2026-06-21T01:36:45.0781426Z         "impl": {
2026-06-21T01:36:45.0781549Z           "complete": true,
2026-06-21T01:36:45.0781655Z           "evidence": [
2026-06-21T01:36:45.0781764Z             {
2026-06-21T01:36:45.0781912Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0782183Z               "line": 925
2026-06-21T01:36:45.0782289Z             },
2026-06-21T01:36:45.0782393Z             {
2026-06-21T01:36:45.0782547Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0782656Z               "line": 994
2026-06-21T01:36:45.0782756Z             }
2026-06-21T01:36:45.0782862Z           ]
2026-06-21T01:36:45.0782967Z         },
2026-06-21T01:36:45.0783074Z         "int": {
2026-06-21T01:36:45.0783203Z           "complete": true,
2026-06-21T01:36:45.0783321Z           "evidence": [
2026-06-21T01:36:45.0783429Z             {
2026-06-21T01:36:45.0783602Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:36:45.0783815Z               "line": 187
2026-06-21T01:36:45.0783917Z             },
2026-06-21T01:36:45.0784026Z             {
2026-06-21T01:36:45.0784170Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T01:36:45.0784288Z               "line": 343
2026-06-21T01:36:45.0784392Z             }
2026-06-21T01:36:45.0784503Z           ]
2026-06-21T01:36:45.0784612Z         },
2026-06-21T01:36:45.0784717Z         "unit": {
2026-06-21T01:36:45.0784837Z           "complete": true,
2026-06-21T01:36:45.0784945Z           "evidence": [
2026-06-21T01:36:45.0785051Z             {
2026-06-21T01:36:45.0785205Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.0785323Z               "line": 1206
2026-06-21T01:36:45.0785429Z             },
2026-06-21T01:36:45.0785529Z             {
2026-06-21T01:36:45.0785660Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0785765Z               "line": 8116
2026-06-21T01:36:45.0785874Z             }
2026-06-21T01:36:45.0785982Z           ]
2026-06-21T01:36:45.0786092Z         }
2026-06-21T01:36:45.0786203Z       }
2026-06-21T01:36:45.0786296Z     },
2026-06-21T01:36:45.0786402Z     {
2026-06-21T01:36:45.0786541Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T01:36:45.0786770Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T01:36:45.0786898Z       "requiredStages": [
2026-06-21T01:36:45.0787017Z         "impl",
2026-06-21T01:36:45.0787136Z         "unit"
2026-06-21T01:36:45.0787240Z       ],
2026-06-21T01:36:45.0787356Z       "stages": {
2026-06-21T01:36:45.0787465Z         "doc": {
2026-06-21T01:36:45.0787579Z           "complete": false,
2026-06-21T01:36:45.0787695Z           "evidence": []
2026-06-21T01:36:45.0787794Z         },
2026-06-21T01:36:45.0787908Z         "impl": {
2026-06-21T01:36:45.0788024Z           "complete": true,
2026-06-21T01:36:45.0788137Z           "evidence": [
2026-06-21T01:36:45.0788242Z             {
2026-06-21T01:36:45.0788410Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0788532Z               "line": 262
2026-06-21T01:36:45.0788642Z             },
2026-06-21T01:36:45.0788743Z             {
2026-06-21T01:36:45.0788885Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0789076Z               "line": 307
2026-06-21T01:36:45.0789166Z             },
2026-06-21T01:36:45.0789276Z             {
2026-06-21T01:36:45.0789429Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0789552Z               "line": 319
2026-06-21T01:36:45.0789654Z             }
2026-06-21T01:36:45.0789772Z           ]
2026-06-21T01:36:45.0789881Z         },
2026-06-21T01:36:45.0789987Z         "int": {
2026-06-21T01:36:45.0790110Z           "complete": false,
2026-06-21T01:36:45.0790216Z           "evidence": []
2026-06-21T01:36:45.0790325Z         },
2026-06-21T01:36:45.0790434Z         "unit": {
2026-06-21T01:36:45.0790554Z           "complete": true,
2026-06-21T01:36:45.0790669Z           "evidence": [
2026-06-21T01:36:45.0790777Z             {
2026-06-21T01:36:45.0790925Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0791037Z               "line": 455
2026-06-21T01:36:45.0791136Z             },
2026-06-21T01:36:45.0791242Z             {
2026-06-21T01:36:45.0791380Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.0791610Z               "line": 499
2026-06-21T01:36:45.0791714Z             }
2026-06-21T01:36:45.0791824Z           ]
2026-06-21T01:36:45.0791929Z         }
2026-06-21T01:36:45.0792023Z       }
2026-06-21T01:36:45.0792124Z     },
2026-06-21T01:36:45.0792220Z     {
2026-06-21T01:36:45.0792334Z       "id": "REQ-HOST-RUN-1",
2026-06-21T01:36:45.0794924Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T01:36:45.0795172Z       "requiredStages": [
2026-06-21T01:36:45.0795277Z         "impl",
2026-06-21T01:36:45.0795383Z         "unit",
2026-06-21T01:36:45.0795487Z         "int"
2026-06-21T01:36:45.0795592Z       ],
2026-06-21T01:36:45.0795693Z       "stages": {
2026-06-21T01:36:45.0795797Z         "doc": {
2026-06-21T01:36:45.0795916Z           "complete": false,
2026-06-21T01:36:45.0796032Z           "evidence": []
2026-06-21T01:36:45.0796131Z         },
2026-06-21T01:36:45.0796225Z         "impl": {
2026-06-21T01:36:45.0796349Z           "complete": true,
2026-06-21T01:36:45.0796462Z           "evidence": [
2026-06-21T01:36:45.0796570Z             {
2026-06-21T01:36:45.0796738Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0796861Z               "line": 30
2026-06-21T01:36:45.0796967Z             },
2026-06-21T01:36:45.0797067Z             {
2026-06-21T01:36:45.0797243Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0797353Z               "line": 76
2026-06-21T01:36:45.0797458Z             },
2026-06-21T01:36:45.0797558Z             {
2026-06-21T01:36:45.0797720Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0797839Z               "line": 181
2026-06-21T01:36:45.0797940Z             },
2026-06-21T01:36:45.0798049Z             {
2026-06-21T01:36:45.0798173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0798284Z               "line": 1266
2026-06-21T01:36:45.0798387Z             }
2026-06-21T01:36:45.0798488Z           ]
2026-06-21T01:36:45.0798599Z         },
2026-06-21T01:36:45.0798702Z         "int": {
2026-06-21T01:36:45.0798822Z           "complete": true,
2026-06-21T01:36:45.0798923Z           "evidence": [
2026-06-21T01:36:45.0799107Z             {
2026-06-21T01:36:45.0799265Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0799383Z               "line": 285
2026-06-21T01:36:45.0799492Z             }
2026-06-21T01:36:45.0799593Z           ]
2026-06-21T01:36:45.0799698Z         },
2026-06-21T01:36:45.0799802Z         "unit": {
2026-06-21T01:36:45.0799932Z           "complete": true,
2026-06-21T01:36:45.0800045Z           "evidence": [
2026-06-21T01:36:45.0800156Z             {
2026-06-21T01:36:45.0800328Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0800432Z               "line": 229
2026-06-21T01:36:45.0800538Z             },
2026-06-21T01:36:45.0800642Z             {
2026-06-21T01:36:45.0800810Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0800932Z               "line": 296
2026-06-21T01:36:45.0801033Z             },
2026-06-21T01:36:45.0801139Z             {
2026-06-21T01:36:45.0801295Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0801413Z               "line": 419
2026-06-21T01:36:45.0801513Z             }
2026-06-21T01:36:45.0801740Z           ]
2026-06-21T01:36:45.0801846Z         }
2026-06-21T01:36:45.0801950Z       }
2026-06-21T01:36:45.0802055Z     },
2026-06-21T01:36:45.0802151Z     {
2026-06-21T01:36:45.0802269Z       "id": "REQ-HOST-RUN-2",
2026-06-21T01:36:45.0804176Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T01:36:45.0804394Z       "requiredStages": [
2026-06-21T01:36:45.0804507Z         "impl",
2026-06-21T01:36:45.0804607Z         "unit",
2026-06-21T01:36:45.0804713Z         "int"
2026-06-21T01:36:45.0804822Z       ],
2026-06-21T01:36:45.0804926Z       "stages": {
2026-06-21T01:36:45.0805037Z         "doc": {
2026-06-21T01:36:45.0805155Z           "complete": false,
2026-06-21T01:36:45.0805270Z           "evidence": []
2026-06-21T01:36:45.0805370Z         },
2026-06-21T01:36:45.0805475Z         "impl": {
2026-06-21T01:36:45.0805594Z           "complete": true,
2026-06-21T01:36:45.0805695Z           "evidence": [
2026-06-21T01:36:45.0805804Z             {
2026-06-21T01:36:45.0805967Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.0806094Z               "line": 182
2026-06-21T01:36:45.0806200Z             },
2026-06-21T01:36:45.0806305Z             {
2026-06-21T01:36:45.0806443Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:36:45.0806554Z               "line": 113
2026-06-21T01:36:45.0806663Z             }
2026-06-21T01:36:45.0806761Z           ]
2026-06-21T01:36:45.0806871Z         },
2026-06-21T01:36:45.0806975Z         "int": {
2026-06-21T01:36:45.0807097Z           "complete": true,
2026-06-21T01:36:45.0807203Z           "evidence": [
2026-06-21T01:36:45.0807303Z             {
2026-06-21T01:36:45.0807464Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0807580Z               "line": 572
2026-06-21T01:36:45.0807685Z             }
2026-06-21T01:36:45.0807784Z           ]
2026-06-21T01:36:45.0807890Z         },
2026-06-21T01:36:45.0807990Z         "unit": {
2026-06-21T01:36:45.0808098Z           "complete": true,
2026-06-21T01:36:45.0808214Z           "evidence": [
2026-06-21T01:36:45.0808318Z             {
2026-06-21T01:36:45.0808466Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T01:36:45.0808571Z               "line": 86
2026-06-21T01:36:45.0808676Z             }
2026-06-21T01:36:45.0808781Z           ]
2026-06-21T01:36:45.0808882Z         }
2026-06-21T01:36:45.0809077Z       }
2026-06-21T01:36:45.0809173Z     },
2026-06-21T01:36:45.0809285Z     {
2026-06-21T01:36:45.0809397Z       "id": "REQ-INFRA-1",
2026-06-21T01:36:45.0809619Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T01:36:45.0809743Z       "requiredStages": [],
2026-06-21T01:36:45.0809848Z       "stages": {
2026-06-21T01:36:45.0809957Z         "doc": {
2026-06-21T01:36:45.0810072Z           "complete": false,
2026-06-21T01:36:45.0810196Z           "evidence": []
2026-06-21T01:36:45.0810295Z         },
2026-06-21T01:36:45.0810402Z         "impl": {
2026-06-21T01:36:45.0810525Z           "complete": false,
2026-06-21T01:36:45.0810644Z           "evidence": []
2026-06-21T01:36:45.0810740Z         },
2026-06-21T01:36:45.0810844Z         "int": {
2026-06-21T01:36:45.0810968Z           "complete": false,
2026-06-21T01:36:45.0811084Z           "evidence": []
2026-06-21T01:36:45.0811187Z         },
2026-06-21T01:36:45.0811292Z         "unit": {
2026-06-21T01:36:45.0811418Z           "complete": false,
2026-06-21T01:36:45.0811650Z           "evidence": []
2026-06-21T01:36:45.0811756Z         }
2026-06-21T01:36:45.0811859Z       }
2026-06-21T01:36:45.0811954Z     },
2026-06-21T01:36:45.0812055Z     {
2026-06-21T01:36:45.0812176Z       "id": "REQ-INST-1",
2026-06-21T01:36:45.0812372Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T01:36:45.0812500Z       "requiredStages": [],
2026-06-21T01:36:45.0812605Z       "stages": {
2026-06-21T01:36:45.0812711Z         "doc": {
2026-06-21T01:36:45.0812820Z           "complete": false,
2026-06-21T01:36:45.0812944Z           "evidence": []
2026-06-21T01:36:45.0813049Z         },
2026-06-21T01:36:45.0813269Z         "impl": {
2026-06-21T01:36:45.0813387Z           "complete": false,
2026-06-21T01:36:45.0813492Z           "evidence": []
2026-06-21T01:36:45.0813588Z         },
2026-06-21T01:36:45.0813683Z         "int": {
2026-06-21T01:36:45.0813807Z           "complete": false,
2026-06-21T01:36:45.0813917Z           "evidence": []
2026-06-21T01:36:45.0814031Z         },
2026-06-21T01:36:45.0814136Z         "unit": {
2026-06-21T01:36:45.0814247Z           "complete": false,
2026-06-21T01:36:45.0814364Z           "evidence": []
2026-06-21T01:36:45.0814465Z         }
2026-06-21T01:36:45.0814571Z       }
2026-06-21T01:36:45.0814675Z     },
2026-06-21T01:36:45.0814779Z     {
2026-06-21T01:36:45.0814898Z       "id": "REQ-INST-10",
2026-06-21T01:36:45.0815143Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T01:36:45.0815263Z       "requiredStages": [
2026-06-21T01:36:45.0815372Z         "impl",
2026-06-21T01:36:45.0815477Z         "unit"
2026-06-21T01:36:45.0815587Z       ],
2026-06-21T01:36:45.0815696Z       "stages": {
2026-06-21T01:36:45.0815806Z         "doc": {
2026-06-21T01:36:45.0815916Z           "complete": false,
2026-06-21T01:36:45.0816025Z           "evidence": []
2026-06-21T01:36:45.0816126Z         },
2026-06-21T01:36:45.0816241Z         "impl": {
2026-06-21T01:36:45.0816354Z           "complete": true,
2026-06-21T01:36:45.0816474Z           "evidence": [
2026-06-21T01:36:45.0816584Z             {
2026-06-21T01:36:45.0816731Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0816851Z               "line": 648
2026-06-21T01:36:45.0816955Z             },
2026-06-21T01:36:45.0817060Z             {
2026-06-21T01:36:45.0817209Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0817326Z               "line": 725
2026-06-21T01:36:45.0817431Z             },
2026-06-21T01:36:45.0817531Z             {
2026-06-21T01:36:45.0817686Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:36:45.0817796Z               "line": 13
2026-06-21T01:36:45.0817902Z             },
2026-06-21T01:36:45.0818015Z             {
2026-06-21T01:36:45.0818159Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:36:45.0818268Z               "line": 67
2026-06-21T01:36:45.0818373Z             },
2026-06-21T01:36:45.0818478Z             {
2026-06-21T01:36:45.0818616Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.0818732Z               "line": 18
2026-06-21T01:36:45.0818840Z             },
2026-06-21T01:36:45.0819026Z             {
2026-06-21T01:36:45.0819174Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.0819288Z               "line": 444
2026-06-21T01:36:45.0819399Z             }
2026-06-21T01:36:45.0819512Z           ]
2026-06-21T01:36:45.0819612Z         },
2026-06-21T01:36:45.0819723Z         "int": {
2026-06-21T01:36:45.0819846Z           "complete": false,
2026-06-21T01:36:45.0819957Z           "evidence": []
2026-06-21T01:36:45.0820076Z         },
2026-06-21T01:36:45.0820184Z         "unit": {
2026-06-21T01:36:45.0820308Z           "complete": true,
2026-06-21T01:36:45.0820428Z           "evidence": [
2026-06-21T01:36:45.0820536Z             {
2026-06-21T01:36:45.0820695Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0820899Z               "line": 932
2026-06-21T01:36:45.0821010Z             },
2026-06-21T01:36:45.0821110Z             {
2026-06-21T01:36:45.0821271Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0821391Z               "line": 1309
2026-06-21T01:36:45.0821499Z             },
2026-06-21T01:36:45.0821601Z             {
2026-06-21T01:36:45.0821747Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0821862Z               "line": 1320
2026-06-21T01:36:45.0821963Z             },
2026-06-21T01:36:45.0822095Z             {
2026-06-21T01:36:45.0822240Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0822514Z               "line": 1336
2026-06-21T01:36:45.0822624Z             },
2026-06-21T01:36:45.0822727Z             {
2026-06-21T01:36:45.0822875Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0822985Z               "line": 1352
2026-06-21T01:36:45.0823089Z             },
2026-06-21T01:36:45.0823189Z             {
2026-06-21T01:36:45.0823347Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0823475Z               "line": 1374
2026-06-21T01:36:45.0823581Z             },
2026-06-21T01:36:45.0823686Z             {
2026-06-21T01:36:45.0823838Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0823947Z               "line": 1679
2026-06-21T01:36:45.0824056Z             },
2026-06-21T01:36:45.0824148Z             {
2026-06-21T01:36:45.0824305Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:36:45.0824424Z               "line": 130
2026-06-21T01:36:45.0824530Z             },
2026-06-21T01:36:45.0824633Z             {
2026-06-21T01:36:45.0824778Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:36:45.0824901Z               "line": 167
2026-06-21T01:36:45.0825001Z             },
2026-06-21T01:36:45.0825103Z             {
2026-06-21T01:36:45.0825240Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:36:45.0825372Z               "line": 175
2026-06-21T01:36:45.0825472Z             },
2026-06-21T01:36:45.0825580Z             {
2026-06-21T01:36:45.0825727Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T01:36:45.0825838Z               "line": 183
2026-06-21T01:36:45.0825942Z             },
2026-06-21T01:36:45.0826037Z             {
2026-06-21T01:36:45.0826185Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.0826318Z               "line": 896
2026-06-21T01:36:45.0826425Z             }
2026-06-21T01:36:45.0826534Z           ]
2026-06-21T01:36:45.0826638Z         }
2026-06-21T01:36:45.0826744Z       }
2026-06-21T01:36:45.0826843Z     },
2026-06-21T01:36:45.0826948Z     {
2026-06-21T01:36:45.0827059Z       "id": "REQ-INST-11",
2026-06-21T01:36:45.0827330Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T01:36:45.0827454Z       "requiredStages": [
2026-06-21T01:36:45.0827558Z         "impl",
2026-06-21T01:36:45.0827674Z         "unit"
2026-06-21T01:36:45.0827778Z       ],
2026-06-21T01:36:45.0827887Z       "stages": {
2026-06-21T01:36:45.0827991Z         "doc": {
2026-06-21T01:36:45.0828114Z           "complete": false,
2026-06-21T01:36:45.0828227Z           "evidence": []
2026-06-21T01:36:45.0828332Z         },
2026-06-21T01:36:45.0828438Z         "impl": {
2026-06-21T01:36:45.0828556Z           "complete": true,
2026-06-21T01:36:45.0828672Z           "evidence": [
2026-06-21T01:36:45.0828776Z             {
2026-06-21T01:36:45.0828933Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0829143Z               "line": 514
2026-06-21T01:36:45.0829243Z             },
2026-06-21T01:36:45.0829386Z             {
2026-06-21T01:36:45.0829577Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0829696Z               "line": 297
2026-06-21T01:36:45.0829801Z             },
2026-06-21T01:36:45.0829911Z             {
2026-06-21T01:36:45.0830058Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:36:45.0830274Z               "line": 59
2026-06-21T01:36:45.0830382Z             },
2026-06-21T01:36:45.0830483Z             {
2026-06-21T01:36:45.0830622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0830740Z               "line": 5291
2026-06-21T01:36:45.0830844Z             },
2026-06-21T01:36:45.0830945Z             {
2026-06-21T01:36:45.0831078Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0831192Z               "line": 7137
2026-06-21T01:36:45.0831293Z             }
2026-06-21T01:36:45.0831402Z           ]
2026-06-21T01:36:45.0831502Z         },
2026-06-21T01:36:45.0831612Z         "int": {
2026-06-21T01:36:45.0831841Z           "complete": false,
2026-06-21T01:36:45.0831956Z           "evidence": []
2026-06-21T01:36:45.0832060Z         },
2026-06-21T01:36:45.0832156Z         "unit": {
2026-06-21T01:36:45.0832270Z           "complete": true,
2026-06-21T01:36:45.0832375Z           "evidence": [
2026-06-21T01:36:45.0832471Z             {
2026-06-21T01:36:45.0832623Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0832732Z               "line": 1479
2026-06-21T01:36:45.0832838Z             },
2026-06-21T01:36:45.0832937Z             {
2026-06-21T01:36:45.0833084Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0833194Z               "line": 1512
2026-06-21T01:36:45.0833301Z             },
2026-06-21T01:36:45.0833405Z             {
2026-06-21T01:36:45.0833570Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0833682Z               "line": 527
2026-06-21T01:36:45.0833778Z             },
2026-06-21T01:36:45.0833888Z             {
2026-06-21T01:36:45.0834035Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:36:45.0834141Z               "line": 160
2026-06-21T01:36:45.0834250Z             },
2026-06-21T01:36:45.0834355Z             {
2026-06-21T01:36:45.0834499Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:36:45.0834621Z               "line": 190
2026-06-21T01:36:45.0834728Z             },
2026-06-21T01:36:45.0834841Z             {
2026-06-21T01:36:45.0834989Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T01:36:45.0835095Z               "line": 225
2026-06-21T01:36:45.0835184Z             },
2026-06-21T01:36:45.0835289Z             {
2026-06-21T01:36:45.0835424Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0835542Z               "line": 7994
2026-06-21T01:36:45.0835648Z             }
2026-06-21T01:36:45.0835749Z           ]
2026-06-21T01:36:45.0835856Z         }
2026-06-21T01:36:45.0835960Z       }
2026-06-21T01:36:45.0836071Z     },
2026-06-21T01:36:45.0836168Z     {
2026-06-21T01:36:45.0836282Z       "id": "REQ-INST-12",
2026-06-21T01:36:45.0836621Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T01:36:45.0836741Z       "requiredStages": [
2026-06-21T01:36:45.0836854Z         "impl",
2026-06-21T01:36:45.0836960Z         "unit"
2026-06-21T01:36:45.0837055Z       ],
2026-06-21T01:36:45.0837160Z       "stages": {
2026-06-21T01:36:45.0837251Z         "doc": {
2026-06-21T01:36:45.0837375Z           "complete": false,
2026-06-21T01:36:45.0837484Z           "evidence": []
2026-06-21T01:36:45.0837590Z         },
2026-06-21T01:36:45.0837699Z         "impl": {
2026-06-21T01:36:45.0837823Z           "complete": true,
2026-06-21T01:36:45.0837934Z           "evidence": [
2026-06-21T01:36:45.0838028Z             {
2026-06-21T01:36:45.0838185Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0838292Z               "line": 566
2026-06-21T01:36:45.0838404Z             },
2026-06-21T01:36:45.0838498Z             {
2026-06-21T01:36:45.0838651Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0838759Z               "line": 659
2026-06-21T01:36:45.0838854Z             },
2026-06-21T01:36:45.0839040Z             {
2026-06-21T01:36:45.0839346Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0839464Z               "line": 739
2026-06-21T01:36:45.0839570Z             },
2026-06-21T01:36:45.0839675Z             {
2026-06-21T01:36:45.0839818Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0839922Z               "line": 96
2026-06-21T01:36:45.0840032Z             },
2026-06-21T01:36:45.0840127Z             {
2026-06-21T01:36:45.0840266Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0840375Z               "line": 269
2026-06-21T01:36:45.0840481Z             },
2026-06-21T01:36:45.0840585Z             {
2026-06-21T01:36:45.0840844Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0840961Z               "line": 148
2026-06-21T01:36:45.0841067Z             }
2026-06-21T01:36:45.0841178Z           ]
2026-06-21T01:36:45.0841285Z         },
2026-06-21T01:36:45.0841389Z         "int": {
2026-06-21T01:36:45.0841510Z           "complete": false,
2026-06-21T01:36:45.0841614Z           "evidence": []
2026-06-21T01:36:45.0841719Z         },
2026-06-21T01:36:45.0841825Z         "unit": {
2026-06-21T01:36:45.0841943Z           "complete": true,
2026-06-21T01:36:45.0842053Z           "evidence": [
2026-06-21T01:36:45.0842158Z             {
2026-06-21T01:36:45.0842305Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0842426Z               "line": 1554
2026-06-21T01:36:45.0842530Z             },
2026-06-21T01:36:45.0842634Z             {
2026-06-21T01:36:45.0842783Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0842897Z               "line": 1577
2026-06-21T01:36:45.0843002Z             },
2026-06-21T01:36:45.0843093Z             {
2026-06-21T01:36:45.0843230Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0843341Z               "line": 1614
2026-06-21T01:36:45.0843441Z             },
2026-06-21T01:36:45.0843544Z             {
2026-06-21T01:36:45.0843692Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.0843815Z               "line": 457
2026-06-21T01:36:45.0843914Z             },
2026-06-21T01:36:45.0844005Z             {
2026-06-21T01:36:45.0844157Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0844257Z               "line": 185
2026-06-21T01:36:45.0844362Z             },
2026-06-21T01:36:45.0844467Z             {
2026-06-21T01:36:45.0844619Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0844735Z               "line": 206
2026-06-21T01:36:45.0844829Z             },
2026-06-21T01:36:45.0844929Z             {
2026-06-21T01:36:45.0845078Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0845196Z               "line": 232
2026-06-21T01:36:45.0845293Z             }
2026-06-21T01:36:45.0845397Z           ]
2026-06-21T01:36:45.0845506Z         }
2026-06-21T01:36:45.0845603Z       }
2026-06-21T01:36:45.0845707Z     },
2026-06-21T01:36:45.0845812Z     {
2026-06-21T01:36:45.0845937Z       "id": "REQ-INST-13",
2026-06-21T01:36:45.0846155Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T01:36:45.0846280Z       "requiredStages": [
2026-06-21T01:36:45.0846384Z         "impl",
2026-06-21T01:36:45.0846483Z         "unit"
2026-06-21T01:36:45.0846592Z       ],
2026-06-21T01:36:45.0846701Z       "stages": {
2026-06-21T01:36:45.0846814Z         "doc": {
2026-06-21T01:36:45.0846919Z           "complete": false,
2026-06-21T01:36:45.0847039Z           "evidence": []
2026-06-21T01:36:45.0847148Z         },
2026-06-21T01:36:45.0847249Z         "impl": {
2026-06-21T01:36:45.0847373Z           "complete": true,
2026-06-21T01:36:45.0847472Z           "evidence": [
2026-06-21T01:36:45.0847578Z             {
2026-06-21T01:36:45.0847725Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0847840Z               "line": 100
2026-06-21T01:36:45.0847954Z             },
2026-06-21T01:36:45.0848135Z             {
2026-06-21T01:36:45.0848287Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0848402Z               "line": 171
2026-06-21T01:36:45.0848498Z             }
2026-06-21T01:36:45.0848602Z           ]
2026-06-21T01:36:45.0848707Z         },
2026-06-21T01:36:45.0848808Z         "int": {
2026-06-21T01:36:45.0848913Z           "complete": false,
2026-06-21T01:36:45.0849112Z           "evidence": []
2026-06-21T01:36:45.0849216Z         },
2026-06-21T01:36:45.0849333Z         "unit": {
2026-06-21T01:36:45.0849448Z           "complete": true,
2026-06-21T01:36:45.0849554Z           "evidence": [
2026-06-21T01:36:45.0849662Z             {
2026-06-21T01:36:45.0849915Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0850034Z               "line": 261
2026-06-21T01:36:45.0850135Z             },
2026-06-21T01:36:45.0850244Z             {
2026-06-21T01:36:45.0850393Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T01:36:45.0850506Z               "line": 279
2026-06-21T01:36:45.0850606Z             }
2026-06-21T01:36:45.0850702Z           ]
2026-06-21T01:36:45.0850798Z         }
2026-06-21T01:36:45.0850893Z       }
2026-06-21T01:36:45.0850997Z     },
2026-06-21T01:36:45.0851099Z     {
2026-06-21T01:36:45.0851226Z       "id": "REQ-INST-14",
2026-06-21T01:36:45.0851662Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T01:36:45.0851775Z       "requiredStages": [
2026-06-21T01:36:45.0851884Z         "doc",
2026-06-21T01:36:45.0851984Z         "impl",
2026-06-21T01:36:45.0852089Z         "unit"
2026-06-21T01:36:45.0852193Z       ],
2026-06-21T01:36:45.0852293Z       "stages": {
2026-06-21T01:36:45.0852399Z         "doc": {
2026-06-21T01:36:45.0852512Z           "complete": true,
2026-06-21T01:36:45.0852627Z           "evidence": [
2026-06-21T01:36:45.0852732Z             {
2026-06-21T01:36:45.0852851Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.0852956Z               "line": 588
2026-06-21T01:36:45.0853057Z             },
2026-06-21T01:36:45.0853156Z             {
2026-06-21T01:36:45.0853286Z               "path": "docs/STORAGE.md",
2026-06-21T01:36:45.0853409Z               "line": 49
2026-06-21T01:36:45.0853509Z             }
2026-06-21T01:36:45.0853616Z           ]
2026-06-21T01:36:45.0853710Z         },
2026-06-21T01:36:45.0853824Z         "impl": {
2026-06-21T01:36:45.0853935Z           "complete": true,
2026-06-21T01:36:45.0854034Z           "evidence": [
2026-06-21T01:36:45.0854142Z             {
2026-06-21T01:36:45.0854304Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0854422Z               "line": 410
2026-06-21T01:36:45.0854521Z             },
2026-06-21T01:36:45.0854627Z             {
2026-06-21T01:36:45.0854779Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0854889Z               "line": 367
2026-06-21T01:36:45.0854999Z             },
2026-06-21T01:36:45.0855108Z             {
2026-06-21T01:36:45.0855257Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0855366Z               "line": 293
2026-06-21T01:36:45.0855465Z             },
2026-06-21T01:36:45.0855576Z             {
2026-06-21T01:36:45.0855704Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0855819Z               "line": 1577
2026-06-21T01:36:45.0855919Z             }
2026-06-21T01:36:45.0856028Z           ]
2026-06-21T01:36:45.0856129Z         },
2026-06-21T01:36:45.0856239Z         "int": {
2026-06-21T01:36:45.0856363Z           "complete": false,
2026-06-21T01:36:45.0856478Z           "evidence": []
2026-06-21T01:36:45.0856587Z         },
2026-06-21T01:36:45.0856682Z         "unit": {
2026-06-21T01:36:45.0856812Z           "complete": true,
2026-06-21T01:36:45.0856925Z           "evidence": [
2026-06-21T01:36:45.0857024Z             {
2026-06-21T01:36:45.0857195Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0857427Z               "line": 1163
2026-06-21T01:36:45.0857537Z             },
2026-06-21T01:36:45.0857637Z             {
2026-06-21T01:36:45.0857800Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0857905Z               "line": 944
2026-06-21T01:36:45.0858013Z             },
2026-06-21T01:36:45.0858119Z             {
2026-06-21T01:36:45.0858262Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0858371Z               "line": 1205
2026-06-21T01:36:45.0858477Z             },
2026-06-21T01:36:45.0858577Z             {
2026-06-21T01:36:45.0858720Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0858900Z               "line": 659
2026-06-21T01:36:45.0859087Z             },
2026-06-21T01:36:45.0862678Z             {
2026-06-21T01:36:45.0862858Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0862973Z               "line": 8070
2026-06-21T01:36:45.0863077Z             }
2026-06-21T01:36:45.0863188Z           ]
2026-06-21T01:36:45.0863312Z         }
2026-06-21T01:36:45.0863421Z       }
2026-06-21T01:36:45.0863521Z     },
2026-06-21T01:36:45.0863626Z     {
2026-06-21T01:36:45.0863750Z       "id": "REQ-INST-15",
2026-06-21T01:36:45.0864557Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T01:36:45.0864684Z       "requiredStages": [
2026-06-21T01:36:45.0864788Z         "doc",
2026-06-21T01:36:45.0864893Z         "impl",
2026-06-21T01:36:45.0864996Z         "unit"
2026-06-21T01:36:45.0865105Z       ],
2026-06-21T01:36:45.0865211Z       "stages": {
2026-06-21T01:36:45.0865320Z         "doc": {
2026-06-21T01:36:45.0865439Z           "complete": true,
2026-06-21T01:36:45.0865545Z           "evidence": [
2026-06-21T01:36:45.0865649Z             {
2026-06-21T01:36:45.0865864Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T01:36:45.0865978Z               "line": 3
2026-06-21T01:36:45.0866069Z             }
2026-06-21T01:36:45.0866174Z           ]
2026-06-21T01:36:45.0866283Z         },
2026-06-21T01:36:45.0866388Z         "impl": {
2026-06-21T01:36:45.0866512Z           "complete": true,
2026-06-21T01:36:45.0866622Z           "evidence": [
2026-06-21T01:36:45.0866728Z             {
2026-06-21T01:36:45.0866898Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0867018Z               "line": 353
2026-06-21T01:36:45.0867123Z             },
2026-06-21T01:36:45.0867232Z             {
2026-06-21T01:36:45.0867382Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.0867499Z               "line": 60
2026-06-21T01:36:45.0867603Z             },
2026-06-21T01:36:45.0867704Z             {
2026-06-21T01:36:45.0867863Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0867987Z               "line": 368
2026-06-21T01:36:45.0868083Z             },
2026-06-21T01:36:45.0868188Z             {
2026-06-21T01:36:45.0868345Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0868455Z               "line": 417
2026-06-21T01:36:45.0868558Z             },
2026-06-21T01:36:45.0868670Z             {
2026-06-21T01:36:45.0868812Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0868917Z               "line": 19
2026-06-21T01:36:45.0869093Z             },
2026-06-21T01:36:45.0869184Z             {
2026-06-21T01:36:45.0869342Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0869517Z               "line": 70
2026-06-21T01:36:45.0869619Z             },
2026-06-21T01:36:45.0869728Z             {
2026-06-21T01:36:45.0869866Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0869972Z               "line": 96
2026-06-21T01:36:45.0870075Z             },
2026-06-21T01:36:45.0870174Z             {
2026-06-21T01:36:45.0870477Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0870587Z               "line": 121
2026-06-21T01:36:45.0870693Z             },
2026-06-21T01:36:45.0870796Z             {
2026-06-21T01:36:45.0870946Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0871060Z               "line": 172
2026-06-21T01:36:45.0871159Z             },
2026-06-21T01:36:45.0871270Z             {
2026-06-21T01:36:45.0871421Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0871546Z               "line": 178
2026-06-21T01:36:45.0871650Z             },
2026-06-21T01:36:45.0871755Z             {
2026-06-21T01:36:45.0872018Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0872142Z               "line": 1469
2026-06-21T01:36:45.0872243Z             }
2026-06-21T01:36:45.0872342Z           ]
2026-06-21T01:36:45.0872447Z         },
2026-06-21T01:36:45.0872553Z         "int": {
2026-06-21T01:36:45.0872676Z           "complete": false,
2026-06-21T01:36:45.0872792Z           "evidence": []
2026-06-21T01:36:45.0872896Z         },
2026-06-21T01:36:45.0873008Z         "unit": {
2026-06-21T01:36:45.0873113Z           "complete": true,
2026-06-21T01:36:45.0873229Z           "evidence": [
2026-06-21T01:36:45.0873327Z             {
2026-06-21T01:36:45.0873491Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0873605Z               "line": 577
2026-06-21T01:36:45.0873700Z             },
2026-06-21T01:36:45.0873806Z             {
2026-06-21T01:36:45.0873961Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.0874082Z               "line": 638
2026-06-21T01:36:45.0874186Z             },
2026-06-21T01:36:45.0874295Z             {
2026-06-21T01:36:45.0874440Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0874558Z               "line": 213
2026-06-21T01:36:45.0874668Z             },
2026-06-21T01:36:45.0874769Z             {
2026-06-21T01:36:45.0874920Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0875031Z               "line": 249
2026-06-21T01:36:45.0875131Z             },
2026-06-21T01:36:45.0875239Z             {
2026-06-21T01:36:45.0875387Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0875499Z               "line": 262
2026-06-21T01:36:45.0875603Z             },
2026-06-21T01:36:45.0875704Z             {
2026-06-21T01:36:45.0875833Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T01:36:45.0875946Z               "line": 338
2026-06-21T01:36:45.0876053Z             },
2026-06-21T01:36:45.0876157Z             {
2026-06-21T01:36:45.0876305Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.0876415Z               "line": 690
2026-06-21T01:36:45.0876524Z             },
2026-06-21T01:36:45.0876625Z             {
2026-06-21T01:36:45.0876763Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0876877Z               "line": 8007
2026-06-21T01:36:45.0876988Z             },
2026-06-21T01:36:45.0877096Z             {
2026-06-21T01:36:45.0877229Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0877345Z               "line": 9837
2026-06-21T01:36:45.0877449Z             }
2026-06-21T01:36:45.0877544Z           ]
2026-06-21T01:36:45.0877646Z         }
2026-06-21T01:36:45.0877754Z       }
2026-06-21T01:36:45.0877859Z     },
2026-06-21T01:36:45.0877961Z     {
2026-06-21T01:36:45.0878073Z       "id": "REQ-INST-2",
2026-06-21T01:36:45.0878225Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T01:36:45.0878348Z       "requiredStages": [
2026-06-21T01:36:45.0878447Z         "impl",
2026-06-21T01:36:45.0878561Z         "unit"
2026-06-21T01:36:45.0878672Z       ],
2026-06-21T01:36:45.0878776Z       "stages": {
2026-06-21T01:36:45.0878886Z         "doc": {
2026-06-21T01:36:45.0879095Z           "complete": false,
2026-06-21T01:36:45.0879211Z           "evidence": []
2026-06-21T01:36:45.0879315Z         },
2026-06-21T01:36:45.0879568Z         "impl": {
2026-06-21T01:36:45.0879687Z           "complete": true,
2026-06-21T01:36:45.0879787Z           "evidence": [
2026-06-21T01:36:45.0879897Z             {
2026-06-21T01:36:45.0880054Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0880175Z               "line": 108
2026-06-21T01:36:45.0880278Z             },
2026-06-21T01:36:45.0880383Z             {
2026-06-21T01:36:45.0880527Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0880631Z               "line": 28
2026-06-21T01:36:45.0880734Z             },
2026-06-21T01:36:45.0880835Z             {
2026-06-21T01:36:45.0880986Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0881191Z               "line": 74
2026-06-21T01:36:45.0881305Z             },
2026-06-21T01:36:45.0881409Z             {
2026-06-21T01:36:45.0881544Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0881662Z               "line": 96
2026-06-21T01:36:45.0881758Z             },
2026-06-21T01:36:45.0881863Z             {
2026-06-21T01:36:45.0882005Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:45.0882106Z               "line": 86
2026-06-21T01:36:45.0882215Z             },
2026-06-21T01:36:45.0882320Z             {
2026-06-21T01:36:45.0882474Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T01:36:45.0882588Z               "line": 118
2026-06-21T01:36:45.0882697Z             }
2026-06-21T01:36:45.0882807Z           ]
2026-06-21T01:36:45.0882907Z         },
2026-06-21T01:36:45.0883017Z         "int": {
2026-06-21T01:36:45.0883136Z           "complete": false,
2026-06-21T01:36:45.0883260Z           "evidence": []
2026-06-21T01:36:45.0883366Z         },
2026-06-21T01:36:45.0883465Z         "unit": {
2026-06-21T01:36:45.0883583Z           "complete": true,
2026-06-21T01:36:45.0883693Z           "evidence": [
2026-06-21T01:36:45.0883808Z             {
2026-06-21T01:36:45.0883954Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T01:36:45.0884070Z               "line": 250
2026-06-21T01:36:45.0884174Z             },
2026-06-21T01:36:45.0884274Z             {
2026-06-21T01:36:45.0884413Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:45.0884527Z               "line": 280
2026-06-21T01:36:45.0884637Z             }
2026-06-21T01:36:45.0884742Z           ]
2026-06-21T01:36:45.0884851Z         }
2026-06-21T01:36:45.0884947Z       }
2026-06-21T01:36:45.0885052Z     },
2026-06-21T01:36:45.0885143Z     {
2026-06-21T01:36:45.0885252Z       "id": "REQ-INST-3",
2026-06-21T01:36:45.0885432Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T01:36:45.0885557Z       "requiredStages": [
2026-06-21T01:36:45.0885663Z         "doc",
2026-06-21T01:36:45.0885766Z         "impl",
2026-06-21T01:36:45.0885879Z         "unit"
2026-06-21T01:36:45.0885990Z       ],
2026-06-21T01:36:45.0886102Z       "stages": {
2026-06-21T01:36:45.0886211Z         "doc": {
2026-06-21T01:36:45.0886327Z           "complete": true,
2026-06-21T01:36:45.0886440Z           "evidence": [
2026-06-21T01:36:45.0886536Z             {
2026-06-21T01:36:45.0886684Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T01:36:45.0886783Z               "line": 3
2026-06-21T01:36:45.0886894Z             }
2026-06-21T01:36:45.0886994Z           ]
2026-06-21T01:36:45.0887093Z         },
2026-06-21T01:36:45.0887204Z         "impl": {
2026-06-21T01:36:45.0887318Z           "complete": true,
2026-06-21T01:36:45.0887437Z           "evidence": [
2026-06-21T01:36:45.0887538Z             {
2026-06-21T01:36:45.0887690Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0887814Z               "line": 59
2026-06-21T01:36:45.0887915Z             },
2026-06-21T01:36:45.0888019Z             {
2026-06-21T01:36:45.0888172Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.0888295Z               "line": 480
2026-06-21T01:36:45.0888400Z             },
2026-06-21T01:36:45.0888502Z             {
2026-06-21T01:36:45.0888732Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0888843Z               "line": 254
2026-06-21T01:36:45.0889026Z             },
2026-06-21T01:36:45.0889121Z             {
2026-06-21T01:36:45.0889279Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0889383Z               "line": 384
2026-06-21T01:36:45.0889489Z             },
2026-06-21T01:36:45.0889589Z             {
2026-06-21T01:36:45.0889737Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0889851Z               "line": 418
2026-06-21T01:36:45.0889951Z             },
2026-06-21T01:36:45.0890171Z             {
2026-06-21T01:36:45.0890337Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T01:36:45.0890434Z               "line": 74
2026-06-21T01:36:45.0890543Z             },
2026-06-21T01:36:45.0890638Z             {
2026-06-21T01:36:45.0890815Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0890929Z               "line": 234
2026-06-21T01:36:45.0891030Z             },
2026-06-21T01:36:45.0891135Z             {
2026-06-21T01:36:45.0891290Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0891400Z               "line": 396
2026-06-21T01:36:45.0891489Z             },
2026-06-21T01:36:45.0891597Z             {
2026-06-21T01:36:45.0891746Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0891865Z               "line": 45
2026-06-21T01:36:45.0891970Z             },
2026-06-21T01:36:45.0892066Z             {
2026-06-21T01:36:45.0892203Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0892318Z               "line": 114
2026-06-21T01:36:45.0892418Z             },
2026-06-21T01:36:45.0892523Z             {
2026-06-21T01:36:45.0892672Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0892799Z               "line": 152
2026-06-21T01:36:45.0892899Z             },
2026-06-21T01:36:45.0893010Z             {
2026-06-21T01:36:45.0893157Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0893277Z               "line": 168
2026-06-21T01:36:45.0893377Z             },
2026-06-21T01:36:45.0893472Z             {
2026-06-21T01:36:45.0893621Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0893734Z               "line": 178
2026-06-21T01:36:45.0893839Z             },
2026-06-21T01:36:45.0893941Z             {
2026-06-21T01:36:45.0894081Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0894200Z               "line": 210
2026-06-21T01:36:45.0894306Z             },
2026-06-21T01:36:45.0894415Z             {
2026-06-21T01:36:45.0894553Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0894672Z               "line": 287
2026-06-21T01:36:45.0894767Z             },
2026-06-21T01:36:45.0894868Z             {
2026-06-21T01:36:45.0895016Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0895129Z               "line": 311
2026-06-21T01:36:45.0895236Z             },
2026-06-21T01:36:45.0895335Z             {
2026-06-21T01:36:45.0895483Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0895589Z               "line": 389
2026-06-21T01:36:45.0895693Z             },
2026-06-21T01:36:45.0895803Z             {
2026-06-21T01:36:45.0895951Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0896060Z               "line": 438
2026-06-21T01:36:45.0896161Z             },
2026-06-21T01:36:45.0896261Z             {
2026-06-21T01:36:45.0896416Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T01:36:45.0896536Z               "line": 37
2026-06-21T01:36:45.0896648Z             },
2026-06-21T01:36:45.0896747Z             {
2026-06-21T01:36:45.0896891Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0897005Z               "line": 62
2026-06-21T01:36:45.0897110Z             },
2026-06-21T01:36:45.0897306Z             {
2026-06-21T01:36:45.0897440Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0897554Z               "line": 279
2026-06-21T01:36:45.0897653Z             },
2026-06-21T01:36:45.0897764Z             {
2026-06-21T01:36:45.0897897Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0898011Z               "line": 1848
2026-06-21T01:36:45.0898117Z             }
2026-06-21T01:36:45.0898226Z           ]
2026-06-21T01:36:45.0898326Z         },
2026-06-21T01:36:45.0898432Z         "int": {
2026-06-21T01:36:45.0898554Z           "complete": false,
2026-06-21T01:36:45.0898660Z           "evidence": []
2026-06-21T01:36:45.0898836Z         },
2026-06-21T01:36:45.0899024Z         "unit": {
2026-06-21T01:36:45.0899147Z           "complete": true,
2026-06-21T01:36:45.0899265Z           "evidence": [
2026-06-21T01:36:45.0899369Z             {
2026-06-21T01:36:45.0899529Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:45.0899643Z               "line": 360
2026-06-21T01:36:45.0899744Z             },
2026-06-21T01:36:45.0899844Z             {
2026-06-21T01:36:45.0899992Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0900097Z               "line": 837
2026-06-21T01:36:45.0900201Z             },
2026-06-21T01:36:45.0900307Z             {
2026-06-21T01:36:45.0900455Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0900564Z               "line": 894
2026-06-21T01:36:45.0900665Z             },
2026-06-21T01:36:45.0900769Z             {
2026-06-21T01:36:45.0900921Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0901037Z               "line": 889
2026-06-21T01:36:45.0901131Z             },
2026-06-21T01:36:45.0901236Z             {
2026-06-21T01:36:45.0901384Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.0901494Z               "line": 1014
2026-06-21T01:36:45.0901600Z             },
2026-06-21T01:36:45.0901709Z             {
2026-06-21T01:36:45.0901864Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0901988Z               "line": 1264
2026-06-21T01:36:45.0902082Z             },
2026-06-21T01:36:45.0902195Z             {
2026-06-21T01:36:45.0902359Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0902463Z               "line": 1405
2026-06-21T01:36:45.0902568Z             },
2026-06-21T01:36:45.0902664Z             {
2026-06-21T01:36:45.0902820Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0902922Z               "line": 449
2026-06-21T01:36:45.0903031Z             },
2026-06-21T01:36:45.0903149Z             {
2026-06-21T01:36:45.0903298Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0903398Z               "line": 485
2026-06-21T01:36:45.0903503Z             },
2026-06-21T01:36:45.0903603Z             {
2026-06-21T01:36:45.0903751Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0903862Z               "line": 540
2026-06-21T01:36:45.0903970Z             },
2026-06-21T01:36:45.0904065Z             {
2026-06-21T01:36:45.0904219Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0904332Z               "line": 697
2026-06-21T01:36:45.0904438Z             },
2026-06-21T01:36:45.0904538Z             {
2026-06-21T01:36:45.0904693Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0904798Z               "line": 931
2026-06-21T01:36:45.0904904Z             },
2026-06-21T01:36:45.0905008Z             {
2026-06-21T01:36:45.0905157Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0905285Z               "line": 945
2026-06-21T01:36:45.0905384Z             },
2026-06-21T01:36:45.0905491Z             {
2026-06-21T01:36:45.0905642Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0905752Z               "line": 1290
2026-06-21T01:36:45.0905967Z             },
2026-06-21T01:36:45.0906072Z             {
2026-06-21T01:36:45.0906215Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.0906333Z               "line": 609
2026-06-21T01:36:45.0906440Z             },
2026-06-21T01:36:45.0906553Z             {
2026-06-21T01:36:45.0906692Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0906811Z               "line": 8031
2026-06-21T01:36:45.0906910Z             }
2026-06-21T01:36:45.0907009Z           ]
2026-06-21T01:36:45.0907110Z         }
2026-06-21T01:36:45.0907222Z       }
2026-06-21T01:36:45.0907331Z     },
2026-06-21T01:36:45.0907423Z     {
2026-06-21T01:36:45.0907537Z       "id": "REQ-INST-4",
2026-06-21T01:36:45.0907866Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T01:36:45.0907990Z       "requiredStages": [
2026-06-21T01:36:45.0908091Z         "impl",
2026-06-21T01:36:45.0908200Z         "unit"
2026-06-21T01:36:45.0908305Z       ],
2026-06-21T01:36:45.0908405Z       "stages": {
2026-06-21T01:36:45.0908510Z         "doc": {
2026-06-21T01:36:45.0908624Z           "complete": false,
2026-06-21T01:36:45.0908739Z           "evidence": []
2026-06-21T01:36:45.0908834Z         },
2026-06-21T01:36:45.0909031Z         "impl": {
2026-06-21T01:36:45.0909154Z           "complete": true,
2026-06-21T01:36:45.0909254Z           "evidence": [
2026-06-21T01:36:45.0909360Z             {
2026-06-21T01:36:45.0909511Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0909631Z               "line": 385
2026-06-21T01:36:45.0909735Z             },
2026-06-21T01:36:45.0909839Z             {
2026-06-21T01:36:45.0909996Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0910118Z               "line": 202
2026-06-21T01:36:45.0910228Z             },
2026-06-21T01:36:45.0910323Z             {
2026-06-21T01:36:45.0910470Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0910581Z               "line": 234
2026-06-21T01:36:45.0910691Z             },
2026-06-21T01:36:45.0910795Z             {
2026-06-21T01:36:45.0910944Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0911062Z               "line": 274
2026-06-21T01:36:45.0911152Z             }
2026-06-21T01:36:45.0911263Z           ]
2026-06-21T01:36:45.0911363Z         },
2026-06-21T01:36:45.0911472Z         "int": {
2026-06-21T01:36:45.0911597Z           "complete": false,
2026-06-21T01:36:45.0911701Z           "evidence": []
2026-06-21T01:36:45.0911811Z         },
2026-06-21T01:36:45.0911917Z         "unit": {
2026-06-21T01:36:45.0912044Z           "complete": true,
2026-06-21T01:36:45.0912155Z           "evidence": [
2026-06-21T01:36:45.0912264Z             {
2026-06-21T01:36:45.0912419Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0912525Z               "line": 889
2026-06-21T01:36:45.0912637Z             },
2026-06-21T01:36:45.0912736Z             {
2026-06-21T01:36:45.0912876Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0912995Z               "line": 561
2026-06-21T01:36:45.0913100Z             },
2026-06-21T01:36:45.0913205Z             {
2026-06-21T01:36:45.0913347Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0913463Z               "line": 668
2026-06-21T01:36:45.0913562Z             },
2026-06-21T01:36:45.0913667Z             {
2026-06-21T01:36:45.0913811Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0913924Z               "line": 750
2026-06-21T01:36:45.0914029Z             }
2026-06-21T01:36:45.0914131Z           ]
2026-06-21T01:36:45.0914230Z         }
2026-06-21T01:36:45.0914325Z       }
2026-06-21T01:36:45.0914422Z     },
2026-06-21T01:36:45.0914525Z     {
2026-06-21T01:36:45.0914640Z       "id": "REQ-INST-5",
2026-06-21T01:36:45.0914863Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T01:36:45.0914983Z       "requiredStages": [
2026-06-21T01:36:45.0915197Z         "impl",
2026-06-21T01:36:45.0915301Z         "unit",
2026-06-21T01:36:45.0915411Z         "int"
2026-06-21T01:36:45.0915512Z       ],
2026-06-21T01:36:45.0915615Z       "stages": {
2026-06-21T01:36:45.0915717Z         "doc": {
2026-06-21T01:36:45.0915836Z           "complete": false,
2026-06-21T01:36:45.0915954Z           "evidence": []
2026-06-21T01:36:45.0916055Z         },
2026-06-21T01:36:45.0916165Z         "impl": {
2026-06-21T01:36:45.0916289Z           "complete": true,
2026-06-21T01:36:45.0916398Z           "evidence": [
2026-06-21T01:36:45.0916503Z             {
2026-06-21T01:36:45.0916657Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T01:36:45.0916884Z               "line": 85
2026-06-21T01:36:45.0916991Z             },
2026-06-21T01:36:45.0917099Z             {
2026-06-21T01:36:45.0917247Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0917357Z               "line": 68
2026-06-21T01:36:45.0917465Z             },
2026-06-21T01:36:45.0917574Z             {
2026-06-21T01:36:45.0917722Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0917830Z               "line": 99
2026-06-21T01:36:45.0917940Z             },
2026-06-21T01:36:45.0918051Z             {
2026-06-21T01:36:45.0918192Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0918303Z               "line": 183
2026-06-21T01:36:45.0918417Z             },
2026-06-21T01:36:45.0918516Z             {
2026-06-21T01:36:45.0918651Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0918760Z               "line": 314
2026-06-21T01:36:45.0918855Z             }
2026-06-21T01:36:45.0919037Z           ]
2026-06-21T01:36:45.0919141Z         },
2026-06-21T01:36:45.0919247Z         "int": {
2026-06-21T01:36:45.0919371Z           "complete": true,
2026-06-21T01:36:45.0919480Z           "evidence": [
2026-06-21T01:36:45.0919591Z             {
2026-06-21T01:36:45.0919742Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.0919853Z               "line": 156
2026-06-21T01:36:45.0919957Z             },
2026-06-21T01:36:45.0920057Z             {
2026-06-21T01:36:45.0920215Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:36:45.0920314Z               "line": 145
2026-06-21T01:36:45.0920418Z             },
2026-06-21T01:36:45.0920518Z             {
2026-06-21T01:36:45.0920668Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0920783Z               "line": 707
2026-06-21T01:36:45.0920879Z             },
2026-06-21T01:36:45.0920988Z             {
2026-06-21T01:36:45.0921136Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0921266Z               "line": 1069
2026-06-21T01:36:45.0921364Z             }
2026-06-21T01:36:45.0921466Z           ]
2026-06-21T01:36:45.0921575Z         },
2026-06-21T01:36:45.0921679Z         "unit": {
2026-06-21T01:36:45.0921799Z           "complete": true,
2026-06-21T01:36:45.0921903Z           "evidence": [
2026-06-21T01:36:45.0922013Z             {
2026-06-21T01:36:45.0922162Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0922276Z               "line": 552
2026-06-21T01:36:45.0922376Z             },
2026-06-21T01:36:45.0922482Z             {
2026-06-21T01:36:45.0922623Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.0922734Z               "line": 595
2026-06-21T01:36:45.0922843Z             },
2026-06-21T01:36:45.0922947Z             {
2026-06-21T01:36:45.0923095Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:36:45.0923211Z               "line": 219
2026-06-21T01:36:45.0923315Z             }
2026-06-21T01:36:45.0923431Z           ]
2026-06-21T01:36:45.0923531Z         }
2026-06-21T01:36:45.0923640Z       }
2026-06-21T01:36:45.0923746Z     },
2026-06-21T01:36:45.0923841Z     {
2026-06-21T01:36:45.0923950Z       "id": "REQ-INST-6",
2026-06-21T01:36:45.0924165Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T01:36:45.0924399Z       "requiredStages": [
2026-06-21T01:36:45.0924504Z         "impl",
2026-06-21T01:36:45.0924608Z         "unit",
2026-06-21T01:36:45.0924714Z         "int"
2026-06-21T01:36:45.0924814Z       ],
2026-06-21T01:36:45.0924918Z       "stages": {
2026-06-21T01:36:45.0925025Z         "doc": {
2026-06-21T01:36:45.0925143Z           "complete": true,
2026-06-21T01:36:45.0925253Z           "evidence": [
2026-06-21T01:36:45.0925363Z             {
2026-06-21T01:36:45.0925495Z               "path": "docs/DEFERRED.md",
2026-06-21T01:36:45.0925601Z               "line": 13
2026-06-21T01:36:45.0925710Z             }
2026-06-21T01:36:45.0925905Z           ]
2026-06-21T01:36:45.0926015Z         },
2026-06-21T01:36:45.0926114Z         "impl": {
2026-06-21T01:36:45.0926238Z           "complete": true,
2026-06-21T01:36:45.0926358Z           "evidence": [
2026-06-21T01:36:45.0926462Z             {
2026-06-21T01:36:45.0926616Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.0926725Z               "line": 391
2026-06-21T01:36:45.0926824Z             },
2026-06-21T01:36:45.0926926Z             {
2026-06-21T01:36:45.0927082Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:36:45.0927188Z               "line": 27
2026-06-21T01:36:45.0927293Z             },
2026-06-21T01:36:45.0927397Z             {
2026-06-21T01:36:45.0927546Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:36:45.0927654Z               "line": 73
2026-06-21T01:36:45.0927759Z             },
2026-06-21T01:36:45.0927861Z             {
2026-06-21T01:36:45.0928007Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T01:36:45.0928120Z               "line": 182
2026-06-21T01:36:45.0928230Z             },
2026-06-21T01:36:45.0928328Z             {
2026-06-21T01:36:45.0928486Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0928591Z               "line": 426
2026-06-21T01:36:45.0928691Z             },
2026-06-21T01:36:45.0928795Z             {
2026-06-21T01:36:45.0928934Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T01:36:45.0929120Z               "line": 31
2026-06-21T01:36:45.0929225Z             },
2026-06-21T01:36:45.0929329Z             {
2026-06-21T01:36:45.0929469Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.0929578Z               "line": 202
2026-06-21T01:36:45.0929677Z             },
2026-06-21T01:36:45.0929779Z             {
2026-06-21T01:36:45.0929921Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0930025Z               "line": 83
2026-06-21T01:36:45.0930131Z             },
2026-06-21T01:36:45.0930235Z             {
2026-06-21T01:36:45.0930365Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0930480Z               "line": 1849
2026-06-21T01:36:45.0930583Z             },
2026-06-21T01:36:45.0930689Z             {
2026-06-21T01:36:45.0930823Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.0930945Z               "line": 179
2026-06-21T01:36:45.0931045Z             },
2026-06-21T01:36:45.0931135Z             {
2026-06-21T01:36:45.0931276Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.0931382Z               "line": 215
2026-06-21T01:36:45.0931482Z             }
2026-06-21T01:36:45.0931586Z           ]
2026-06-21T01:36:45.0931687Z         },
2026-06-21T01:36:45.0931792Z         "int": {
2026-06-21T01:36:45.0931910Z           "complete": true,
2026-06-21T01:36:45.0932030Z           "evidence": [
2026-06-21T01:36:45.0932130Z             {
2026-06-21T01:36:45.0932278Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0932393Z               "line": 721
2026-06-21T01:36:45.0932502Z             },
2026-06-21T01:36:45.0932611Z             {
2026-06-21T01:36:45.0932760Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0932873Z               "line": 1114
2026-06-21T01:36:45.0932970Z             },
2026-06-21T01:36:45.0933174Z             {
2026-06-21T01:36:45.0933314Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.0933436Z               "line": 726
2026-06-21T01:36:45.0933540Z             }
2026-06-21T01:36:45.0933645Z           ]
2026-06-21T01:36:45.0933758Z         },
2026-06-21T01:36:45.0933862Z         "unit": {
2026-06-21T01:36:45.0933977Z           "complete": true,
2026-06-21T01:36:45.0934077Z           "evidence": [
2026-06-21T01:36:45.0934167Z             {
2026-06-21T01:36:45.0934321Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.0934429Z               "line": 661
2026-06-21T01:36:45.0934534Z             },
2026-06-21T01:36:45.0934721Z             {
2026-06-21T01:36:45.0934874Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.0934978Z               "line": 899
2026-06-21T01:36:45.0935087Z             },
2026-06-21T01:36:45.0935183Z             {
2026-06-21T01:36:45.0935326Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T01:36:45.0935450Z               "line": 66
2026-06-21T01:36:45.0935551Z             },
2026-06-21T01:36:45.0935659Z             {
2026-06-21T01:36:45.0935793Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.0935914Z               "line": 297
2026-06-21T01:36:45.0936022Z             },
2026-06-21T01:36:45.0936118Z             {
2026-06-21T01:36:45.0936266Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.0936374Z               "line": 203
2026-06-21T01:36:45.0936484Z             }
2026-06-21T01:36:45.0936575Z           ]
2026-06-21T01:36:45.0936679Z         }
2026-06-21T01:36:45.0936779Z       }
2026-06-21T01:36:45.0936885Z     },
2026-06-21T01:36:45.0936984Z     {
2026-06-21T01:36:45.0937104Z       "id": "REQ-INST-7",
2026-06-21T01:36:45.0937271Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T01:36:45.0937394Z       "requiredStages": [
2026-06-21T01:36:45.0937500Z         "impl",
2026-06-21T01:36:45.0937609Z         "unit",
2026-06-21T01:36:45.0937718Z         "int"
2026-06-21T01:36:45.0937829Z       ],
2026-06-21T01:36:45.0937933Z       "stages": {
2026-06-21T01:36:45.0938038Z         "doc": {
2026-06-21T01:36:45.0938149Z           "complete": false,
2026-06-21T01:36:45.0938262Z           "evidence": []
2026-06-21T01:36:45.0938367Z         },
2026-06-21T01:36:45.0938478Z         "impl": {
2026-06-21T01:36:45.0938605Z           "complete": true,
2026-06-21T01:36:45.0938709Z           "evidence": [
2026-06-21T01:36:45.0938814Z             {
2026-06-21T01:36:45.0939041Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.0939152Z               "line": 436
2026-06-21T01:36:45.0939260Z             },
2026-06-21T01:36:45.0939351Z             {
2026-06-21T01:36:45.0939518Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0939622Z               "line": 27
2026-06-21T01:36:45.0939733Z             },
2026-06-21T01:36:45.0939833Z             {
2026-06-21T01:36:45.0939995Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0940109Z               "line": 207
2026-06-21T01:36:45.0940214Z             },
2026-06-21T01:36:45.0940309Z             {
2026-06-21T01:36:45.0940467Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0940576Z               "line": 344
2026-06-21T01:36:45.0943343Z             },
2026-06-21T01:36:45.0943477Z             {
2026-06-21T01:36:45.0943644Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T01:36:45.0943758Z               "line": 59
2026-06-21T01:36:45.0943864Z             },
2026-06-21T01:36:45.0943968Z             {
2026-06-21T01:36:45.0944143Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0944257Z               "line": 41
2026-06-21T01:36:45.0944365Z             },
2026-06-21T01:36:45.0944470Z             {
2026-06-21T01:36:45.0944628Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0944746Z               "line": 27
2026-06-21T01:36:45.0945013Z             },
2026-06-21T01:36:45.0945114Z             {
2026-06-21T01:36:45.0945272Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0945376Z               "line": 119
2026-06-21T01:36:45.0945482Z             },
2026-06-21T01:36:45.0945571Z             {
2026-06-21T01:36:45.0945733Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0945849Z               "line": 134
2026-06-21T01:36:45.0945953Z             },
2026-06-21T01:36:45.0946053Z             {
2026-06-21T01:36:45.0946206Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T01:36:45.0946431Z               "line": 139
2026-06-21T01:36:45.0946525Z             }
2026-06-21T01:36:45.0946630Z           ]
2026-06-21T01:36:45.0946731Z         },
2026-06-21T01:36:45.0946836Z         "int": {
2026-06-21T01:36:45.0946958Z           "complete": true,
2026-06-21T01:36:45.0947068Z           "evidence": [
2026-06-21T01:36:45.0947174Z             {
2026-06-21T01:36:45.0947329Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:36:45.0947445Z               "line": 145
2026-06-21T01:36:45.0947544Z             },
2026-06-21T01:36:45.0947654Z             {
2026-06-21T01:36:45.0947812Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0947921Z               "line": 665
2026-06-21T01:36:45.0948022Z             },
2026-06-21T01:36:45.0948126Z             {
2026-06-21T01:36:45.0948274Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0948380Z               "line": 964
2026-06-21T01:36:45.0948484Z             }
2026-06-21T01:36:45.0948589Z           ]
2026-06-21T01:36:45.0948690Z         },
2026-06-21T01:36:45.0948793Z         "unit": {
2026-06-21T01:36:45.0948913Z           "complete": true,
2026-06-21T01:36:45.0949117Z           "evidence": [
2026-06-21T01:36:45.0949217Z             {
2026-06-21T01:36:45.0949383Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0949515Z               "line": 1134
2026-06-21T01:36:45.0949606Z             },
2026-06-21T01:36:45.0949707Z             {
2026-06-21T01:36:45.0949863Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.0949978Z               "line": 1521
2026-06-21T01:36:45.0950083Z             },
2026-06-21T01:36:45.0950191Z             {
2026-06-21T01:36:45.0950350Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T01:36:45.0950459Z               "line": 84
2026-06-21T01:36:45.0950570Z             },
2026-06-21T01:36:45.0950674Z             {
2026-06-21T01:36:45.0950821Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0950946Z               "line": 812
2026-06-21T01:36:45.0951046Z             },
2026-06-21T01:36:45.0951146Z             {
2026-06-21T01:36:45.0951299Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0951413Z               "line": 823
2026-06-21T01:36:45.0951514Z             },
2026-06-21T01:36:45.0951628Z             {
2026-06-21T01:36:45.0951780Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0951887Z               "line": 838
2026-06-21T01:36:45.0951999Z             },
2026-06-21T01:36:45.0952103Z             {
2026-06-21T01:36:45.0952255Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0952359Z               "line": 166
2026-06-21T01:36:45.0952468Z             },
2026-06-21T01:36:45.0952579Z             {
2026-06-21T01:36:45.0952725Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0952836Z               "line": 181
2026-06-21T01:36:45.0952941Z             },
2026-06-21T01:36:45.0953045Z             {
2026-06-21T01:36:45.0953184Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.0953303Z               "line": 214
2026-06-21T01:36:45.0953403Z             }
2026-06-21T01:36:45.0953513Z           ]
2026-06-21T01:36:45.0953618Z         }
2026-06-21T01:36:45.0953823Z       }
2026-06-21T01:36:45.0953932Z     },
2026-06-21T01:36:45.0954032Z     {
2026-06-21T01:36:45.0954143Z       "id": "REQ-INST-8",
2026-06-21T01:36:45.0954337Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T01:36:45.0954458Z       "requiredStages": [
2026-06-21T01:36:45.0954556Z         "impl",
2026-06-21T01:36:45.0954660Z         "unit",
2026-06-21T01:36:45.0954770Z         "int"
2026-06-21T01:36:45.0954873Z       ],
2026-06-21T01:36:45.0954982Z       "stages": {
2026-06-21T01:36:45.0955092Z         "doc": {
2026-06-21T01:36:45.0955207Z           "complete": false,
2026-06-21T01:36:45.0955321Z           "evidence": []
2026-06-21T01:36:45.0955513Z         },
2026-06-21T01:36:45.0955626Z         "impl": {
2026-06-21T01:36:45.0955741Z           "complete": true,
2026-06-21T01:36:45.0955851Z           "evidence": [
2026-06-21T01:36:45.0955960Z             {
2026-06-21T01:36:45.0956108Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0956231Z               "line": 104
2026-06-21T01:36:45.0956328Z             },
2026-06-21T01:36:45.0956437Z             {
2026-06-21T01:36:45.0956580Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0956705Z               "line": 330
2026-06-21T01:36:45.0956808Z             },
2026-06-21T01:36:45.0956914Z             {
2026-06-21T01:36:45.0957053Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.0957147Z               "line": 370
2026-06-21T01:36:45.0957258Z             },
2026-06-21T01:36:45.0957363Z             {
2026-06-21T01:36:45.0957509Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.0957633Z               "line": 62
2026-06-21T01:36:45.0957734Z             }
2026-06-21T01:36:45.0957837Z           ]
2026-06-21T01:36:45.0957938Z         },
2026-06-21T01:36:45.0958043Z         "int": {
2026-06-21T01:36:45.0958152Z           "complete": true,
2026-06-21T01:36:45.0958258Z           "evidence": [
2026-06-21T01:36:45.0958367Z             {
2026-06-21T01:36:45.0958524Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.0958635Z               "line": 415
2026-06-21T01:36:45.0958730Z             },
2026-06-21T01:36:45.0958834Z             {
2026-06-21T01:36:45.0959073Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.0959193Z               "line": 1028
2026-06-21T01:36:45.0959302Z             }
2026-06-21T01:36:45.0959406Z           ]
2026-06-21T01:36:45.0959512Z         },
2026-06-21T01:36:45.0959617Z         "unit": {
2026-06-21T01:36:45.0959735Z           "complete": true,
2026-06-21T01:36:45.0959844Z           "evidence": [
2026-06-21T01:36:45.0959962Z             {
2026-06-21T01:36:45.0960122Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0960238Z               "line": 366
2026-06-21T01:36:45.0960328Z             },
2026-06-21T01:36:45.0960432Z             {
2026-06-21T01:36:45.0960591Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.0960704Z               "line": 633
2026-06-21T01:36:45.0960815Z             },
2026-06-21T01:36:45.0960915Z             {
2026-06-21T01:36:45.0961062Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.0961178Z               "line": 116
2026-06-21T01:36:45.0961282Z             },
2026-06-21T01:36:45.0961382Z             {
2026-06-21T01:36:45.0961530Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.0961630Z               "line": 160
2026-06-21T01:36:45.0961735Z             }
2026-06-21T01:36:45.0961836Z           ]
2026-06-21T01:36:45.0961935Z         }
2026-06-21T01:36:45.0962040Z       }
2026-06-21T01:36:45.0962146Z     },
2026-06-21T01:36:45.0962249Z     {
2026-06-21T01:36:45.0962360Z       "id": "REQ-INST-9",
2026-06-21T01:36:45.0962583Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T01:36:45.0962702Z       "requiredStages": [
2026-06-21T01:36:45.0962811Z         "impl",
2026-06-21T01:36:45.0963024Z         "unit"
2026-06-21T01:36:45.0963124Z       ],
2026-06-21T01:36:45.0963229Z       "stages": {
2026-06-21T01:36:45.0963333Z         "doc": {
2026-06-21T01:36:45.0963458Z           "complete": false,
2026-06-21T01:36:45.0963562Z           "evidence": []
2026-06-21T01:36:45.0963672Z         },
2026-06-21T01:36:45.0963777Z         "impl": {
2026-06-21T01:36:45.0963901Z           "complete": true,
2026-06-21T01:36:45.0964011Z           "evidence": [
2026-06-21T01:36:45.0964130Z             {
2026-06-21T01:36:45.0964287Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0964388Z               "line": 449
2026-06-21T01:36:45.0964592Z             }
2026-06-21T01:36:45.0964694Z           ]
2026-06-21T01:36:45.0964792Z         },
2026-06-21T01:36:45.0964893Z         "int": {
2026-06-21T01:36:45.0965013Z           "complete": false,
2026-06-21T01:36:45.0965126Z           "evidence": []
2026-06-21T01:36:45.0965230Z         },
2026-06-21T01:36:45.0965344Z         "unit": {
2026-06-21T01:36:45.0965462Z           "complete": true,
2026-06-21T01:36:45.0965576Z           "evidence": [
2026-06-21T01:36:45.0965667Z             {
2026-06-21T01:36:45.0965814Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0965924Z               "line": 1397
2026-06-21T01:36:45.0966025Z             },
2026-06-21T01:36:45.0966129Z             {
2026-06-21T01:36:45.0966278Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0966392Z               "line": 1406
2026-06-21T01:36:45.0966491Z             },
2026-06-21T01:36:45.0966593Z             {
2026-06-21T01:36:45.0966745Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0966864Z               "line": 1422
2026-06-21T01:36:45.0966973Z             },
2026-06-21T01:36:45.0967074Z             {
2026-06-21T01:36:45.0967222Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0967331Z               "line": 1434
2026-06-21T01:36:45.0967436Z             },
2026-06-21T01:36:45.0967537Z             {
2026-06-21T01:36:45.0967679Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.0967789Z               "line": 1454
2026-06-21T01:36:45.0967890Z             }
2026-06-21T01:36:45.0967998Z           ]
2026-06-21T01:36:45.0968102Z         }
2026-06-21T01:36:45.0968202Z       }
2026-06-21T01:36:45.0968308Z     },
2026-06-21T01:36:45.0968402Z     {
2026-06-21T01:36:45.0968527Z       "id": "REQ-INSTALL-1",
2026-06-21T01:36:45.0968745Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T01:36:45.0968871Z       "requiredStages": [
2026-06-21T01:36:45.0969046Z         "doc",
2026-06-21T01:36:45.0969147Z         "impl",
2026-06-21T01:36:45.0969247Z         "int"
2026-06-21T01:36:45.0969342Z       ],
2026-06-21T01:36:45.0969453Z       "stages": {
2026-06-21T01:36:45.0969548Z         "doc": {
2026-06-21T01:36:45.0969675Z           "complete": true,
2026-06-21T01:36:45.0969791Z           "evidence": [
2026-06-21T01:36:45.0969895Z             {
2026-06-21T01:36:45.0970024Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.0970125Z               "line": 754
2026-06-21T01:36:45.0970233Z             }
2026-06-21T01:36:45.0970333Z           ]
2026-06-21T01:36:45.0970437Z         },
2026-06-21T01:36:45.0970555Z         "impl": {
2026-06-21T01:36:45.0970664Z           "complete": true,
2026-06-21T01:36:45.0970774Z           "evidence": [
2026-06-21T01:36:45.0970874Z             {
2026-06-21T01:36:45.0971017Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.0971122Z               "line": 57
2026-06-21T01:36:45.0971236Z             },
2026-06-21T01:36:45.0971336Z             {
2026-06-21T01:36:45.0971465Z               "path": "installer/install.sh",
2026-06-21T01:36:45.0971579Z               "line": 52
2026-06-21T01:36:45.0971681Z             }
2026-06-21T01:36:45.0971776Z           ]
2026-06-21T01:36:45.0971870Z         },
2026-06-21T01:36:45.0971985Z         "int": {
2026-06-21T01:36:45.0972204Z           "complete": true,
2026-06-21T01:36:45.0972310Z           "evidence": [
2026-06-21T01:36:45.0972419Z             {
2026-06-21T01:36:45.0972571Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:36:45.0972687Z               "line": 21
2026-06-21T01:36:45.0972785Z             }
2026-06-21T01:36:45.0972891Z           ]
2026-06-21T01:36:45.0972992Z         },
2026-06-21T01:36:45.0973096Z         "unit": {
2026-06-21T01:36:45.0973214Z           "complete": false,
2026-06-21T01:36:45.0973324Z           "evidence": []
2026-06-21T01:36:45.0973422Z         }
2026-06-21T01:36:45.0973522Z       }
2026-06-21T01:36:45.0973723Z     },
2026-06-21T01:36:45.0973827Z     {
2026-06-21T01:36:45.0973947Z       "id": "REQ-INSTALL-10",
2026-06-21T01:36:45.0975429Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T01:36:45.0975555Z       "requiredStages": [
2026-06-21T01:36:45.0975662Z         "impl",
2026-06-21T01:36:45.0975771Z         "unit"
2026-06-21T01:36:45.0975876Z       ],
2026-06-21T01:36:45.0975989Z       "stages": {
2026-06-21T01:36:45.0976092Z         "doc": {
2026-06-21T01:36:45.0976213Z           "complete": false,
2026-06-21T01:36:45.0976327Z           "evidence": []
2026-06-21T01:36:45.0976426Z         },
2026-06-21T01:36:45.0976537Z         "impl": {
2026-06-21T01:36:45.0976665Z           "complete": true,
2026-06-21T01:36:45.0976775Z           "evidence": [
2026-06-21T01:36:45.0976875Z             {
2026-06-21T01:36:45.0977023Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.0977129Z               "line": 191
2026-06-21T01:36:45.0977238Z             }
2026-06-21T01:36:45.0977352Z           ]
2026-06-21T01:36:45.0977453Z         },
2026-06-21T01:36:45.0977557Z         "int": {
2026-06-21T01:36:45.0977676Z           "complete": false,
2026-06-21T01:36:45.0977787Z           "evidence": []
2026-06-21T01:36:45.0977886Z         },
2026-06-21T01:36:45.0978001Z         "unit": {
2026-06-21T01:36:45.0978121Z           "complete": true,
2026-06-21T01:36:45.0978229Z           "evidence": [
2026-06-21T01:36:45.0978330Z             {
2026-06-21T01:36:45.0978478Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:36:45.0978591Z               "line": 211
2026-06-21T01:36:45.0978691Z             }
2026-06-21T01:36:45.0978792Z           ]
2026-06-21T01:36:45.0978896Z         }
2026-06-21T01:36:45.0979059Z       }
2026-06-21T01:36:45.0979159Z     },
2026-06-21T01:36:45.0979263Z     {
2026-06-21T01:36:45.0979383Z       "id": "REQ-INSTALL-11",
2026-06-21T01:36:45.0981296Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T01:36:45.0981430Z       "requiredStages": [
2026-06-21T01:36:45.0981539Z         "doc",
2026-06-21T01:36:45.0981639Z         "impl",
2026-06-21T01:36:45.0981749Z         "unit"
2026-06-21T01:36:45.0981853Z       ],
2026-06-21T01:36:45.0981959Z       "stages": {
2026-06-21T01:36:45.0982069Z         "doc": {
2026-06-21T01:36:45.0982177Z           "complete": true,
2026-06-21T01:36:45.0982284Z           "evidence": [
2026-06-21T01:36:45.0982383Z             {
2026-06-21T01:36:45.0982646Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.0982755Z               "line": 138
2026-06-21T01:36:45.0982860Z             },
2026-06-21T01:36:45.0982970Z             {
2026-06-21T01:36:45.0983098Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.0983209Z               "line": 82
2026-06-21T01:36:45.0983309Z             }
2026-06-21T01:36:45.0983418Z           ]
2026-06-21T01:36:45.0983524Z         },
2026-06-21T01:36:45.0983628Z         "impl": {
2026-06-21T01:36:45.0983746Z           "complete": true,
2026-06-21T01:36:45.0983851Z           "evidence": [
2026-06-21T01:36:45.0983959Z             {
2026-06-21T01:36:45.0984105Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.0984325Z               "line": 223
2026-06-21T01:36:45.0984411Z             },
2026-06-21T01:36:45.0984522Z             {
2026-06-21T01:36:45.0984682Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0984788Z               "line": 99
2026-06-21T01:36:45.0984902Z             },
2026-06-21T01:36:45.0985002Z             {
2026-06-21T01:36:45.0985160Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.0985269Z               "line": 117
2026-06-21T01:36:45.0985374Z             },
2026-06-21T01:36:45.0985485Z             {
2026-06-21T01:36:45.0985641Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T01:36:45.0985747Z               "line": 332
2026-06-21T01:36:45.0985847Z             },
2026-06-21T01:36:45.0985951Z             {
2026-06-21T01:36:45.0986105Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.0986208Z               "line": 88
2026-06-21T01:36:45.0986312Z             },
2026-06-21T01:36:45.0986417Z             {
2026-06-21T01:36:45.0986563Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.0986667Z               "line": 104
2026-06-21T01:36:45.0986778Z             },
2026-06-21T01:36:45.0986878Z             {
2026-06-21T01:36:45.0987030Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0987150Z               "line": 297
2026-06-21T01:36:45.0987254Z             },
2026-06-21T01:36:45.0987359Z             {
2026-06-21T01:36:45.0987503Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0987621Z               "line": 332
2026-06-21T01:36:45.0987718Z             },
2026-06-21T01:36:45.0987807Z             {
2026-06-21T01:36:45.0987964Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0988070Z               "line": 523
2026-06-21T01:36:45.0988179Z             },
2026-06-21T01:36:45.0988279Z             {
2026-06-21T01:36:45.0988432Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0988551Z               "line": 546
2026-06-21T01:36:45.0988652Z             },
2026-06-21T01:36:45.0988761Z             {
2026-06-21T01:36:45.0988909Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0989108Z               "line": 561
2026-06-21T01:36:45.0989212Z             },
2026-06-21T01:36:45.0989318Z             {
2026-06-21T01:36:45.0989451Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.0989561Z               "line": 492
2026-06-21T01:36:45.0989667Z             }
2026-06-21T01:36:45.0989771Z           ]
2026-06-21T01:36:45.0989875Z         },
2026-06-21T01:36:45.0989981Z         "int": {
2026-06-21T01:36:45.0990105Z           "complete": false,
2026-06-21T01:36:45.0990224Z           "evidence": []
2026-06-21T01:36:45.0990319Z         },
2026-06-21T01:36:45.0990429Z         "unit": {
2026-06-21T01:36:45.0990539Z           "complete": true,
2026-06-21T01:36:45.0990658Z           "evidence": [
2026-06-21T01:36:45.0990753Z             {
2026-06-21T01:36:45.0990912Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0991029Z               "line": 799
2026-06-21T01:36:45.0991134Z             },
2026-06-21T01:36:45.0991236Z             {
2026-06-21T01:36:45.0991387Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0991610Z               "line": 811
2026-06-21T01:36:45.0991718Z             },
2026-06-21T01:36:45.0991827Z             {
2026-06-21T01:36:45.0991981Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.0992089Z               "line": 820
2026-06-21T01:36:45.0992195Z             }
2026-06-21T01:36:45.0992300Z           ]
2026-06-21T01:36:45.0992408Z         }
2026-06-21T01:36:45.0992505Z       }
2026-06-21T01:36:45.0992614Z     },
2026-06-21T01:36:45.0992723Z     {
2026-06-21T01:36:45.0992848Z       "id": "REQ-INSTALL-12",
2026-06-21T01:36:45.0995672Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T01:36:45.0995929Z       "requiredStages": [
2026-06-21T01:36:45.0996035Z         "doc",
2026-06-21T01:36:45.0996139Z         "impl",
2026-06-21T01:36:45.0996254Z         "unit",
2026-06-21T01:36:45.0996355Z         "int"
2026-06-21T01:36:45.0996468Z       ],
2026-06-21T01:36:45.0996568Z       "stages": {
2026-06-21T01:36:45.0996675Z         "doc": {
2026-06-21T01:36:45.0996787Z           "complete": true,
2026-06-21T01:36:45.0996910Z           "evidence": [
2026-06-21T01:36:45.0997011Z             {
2026-06-21T01:36:45.0997151Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.0997256Z               "line": 185
2026-06-21T01:36:45.0997357Z             }
2026-06-21T01:36:45.0997461Z           ]
2026-06-21T01:36:45.0997561Z         },
2026-06-21T01:36:45.0997676Z         "impl": {
2026-06-21T01:36:45.0997785Z           "complete": true,
2026-06-21T01:36:45.0997905Z           "evidence": [
2026-06-21T01:36:45.0998001Z             {
2026-06-21T01:36:45.0998157Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.0998273Z               "line": 27
2026-06-21T01:36:45.0998367Z             },
2026-06-21T01:36:45.0998467Z             {
2026-06-21T01:36:45.0998631Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.0998749Z               "line": 223
2026-06-21T01:36:45.0998854Z             },
2026-06-21T01:36:45.0999034Z             {
2026-06-21T01:36:45.0999174Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.0999284Z               "line": 5677
2026-06-21T01:36:45.0999393Z             }
2026-06-21T01:36:45.0999499Z           ]
2026-06-21T01:36:45.0999599Z         },
2026-06-21T01:36:45.0999706Z         "int": {
2026-06-21T01:36:45.0999821Z           "complete": true,
2026-06-21T01:36:45.0999917Z           "evidence": [
2026-06-21T01:36:45.1000021Z             {
2026-06-21T01:36:45.1000183Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T01:36:45.1000293Z               "line": 19
2026-06-21T01:36:45.1000398Z             }
2026-06-21T01:36:45.1000499Z           ]
2026-06-21T01:36:45.1000603Z         },
2026-06-21T01:36:45.1000707Z         "unit": {
2026-06-21T01:36:45.1000828Z           "complete": true,
2026-06-21T01:36:45.1000941Z           "evidence": [
2026-06-21T01:36:45.1001046Z             {
2026-06-21T01:36:45.1001204Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1001318Z               "line": 395
2026-06-21T01:36:45.1001419Z             },
2026-06-21T01:36:45.1001637Z             {
2026-06-21T01:36:45.1001782Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1001899Z               "line": 421
2026-06-21T01:36:45.1002003Z             },
2026-06-21T01:36:45.1002114Z             {
2026-06-21T01:36:45.1002264Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1002373Z               "line": 440
2026-06-21T01:36:45.1002479Z             },
2026-06-21T01:36:45.1002583Z             {
2026-06-21T01:36:45.1002736Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1002846Z               "line": 475
2026-06-21T01:36:45.1002950Z             },
2026-06-21T01:36:45.1003161Z             {
2026-06-21T01:36:45.1003293Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1003399Z               "line": 8665
2026-06-21T01:36:45.1003503Z             }
2026-06-21T01:36:45.1003612Z           ]
2026-06-21T01:36:45.1003719Z         }
2026-06-21T01:36:45.1003818Z       }
2026-06-21T01:36:45.1003932Z     },
2026-06-21T01:36:45.1004034Z     {
2026-06-21T01:36:45.1004161Z       "id": "REQ-INSTALL-2",
2026-06-21T01:36:45.1004315Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T01:36:45.1004433Z       "requiredStages": [
2026-06-21T01:36:45.1004534Z         "doc"
2026-06-21T01:36:45.1004639Z       ],
2026-06-21T01:36:45.1004748Z       "stages": {
2026-06-21T01:36:45.1004851Z         "doc": {
2026-06-21T01:36:45.1004976Z           "complete": true,
2026-06-21T01:36:45.1005084Z           "evidence": [
2026-06-21T01:36:45.1005192Z             {
2026-06-21T01:36:45.1005303Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1005418Z               "line": 755
2026-06-21T01:36:45.1005526Z             }
2026-06-21T01:36:45.1005627Z           ]
2026-06-21T01:36:45.1005732Z         },
2026-06-21T01:36:45.1005836Z         "impl": {
2026-06-21T01:36:45.1005961Z           "complete": false,
2026-06-21T01:36:45.1006071Z           "evidence": []
2026-06-21T01:36:45.1006174Z         },
2026-06-21T01:36:45.1006280Z         "int": {
2026-06-21T01:36:45.1006399Z           "complete": false,
2026-06-21T01:36:45.1006509Z           "evidence": []
2026-06-21T01:36:45.1006605Z         },
2026-06-21T01:36:45.1006718Z         "unit": {
2026-06-21T01:36:45.1006828Z           "complete": false,
2026-06-21T01:36:45.1006939Z           "evidence": []
2026-06-21T01:36:45.1007047Z         }
2026-06-21T01:36:45.1007148Z       }
2026-06-21T01:36:45.1007254Z     },
2026-06-21T01:36:45.1007362Z     {
2026-06-21T01:36:45.1007484Z       "id": "REQ-INSTALL-3",
2026-06-21T01:36:45.1007660Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T01:36:45.1007788Z       "requiredStages": [
2026-06-21T01:36:45.1007898Z         "impl",
2026-06-21T01:36:45.1008003Z         "int"
2026-06-21T01:36:45.1008107Z       ],
2026-06-21T01:36:45.1008209Z       "stages": {
2026-06-21T01:36:45.1008309Z         "doc": {
2026-06-21T01:36:45.1008417Z           "complete": false,
2026-06-21T01:36:45.1008538Z           "evidence": []
2026-06-21T01:36:45.1008647Z         },
2026-06-21T01:36:45.1008751Z         "impl": {
2026-06-21T01:36:45.1008876Z           "complete": true,
2026-06-21T01:36:45.1009066Z           "evidence": [
2026-06-21T01:36:45.1009172Z             {
2026-06-21T01:36:45.1009309Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.1009424Z               "line": 100
2026-06-21T01:36:45.1009529Z             },
2026-06-21T01:36:45.1009629Z             {
2026-06-21T01:36:45.1009763Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.1009877Z               "line": 111
2026-06-21T01:36:45.1009976Z             },
2026-06-21T01:36:45.1010083Z             {
2026-06-21T01:36:45.1010229Z               "path": "installer/install.sh",
2026-06-21T01:36:45.1010342Z               "line": 79
2026-06-21T01:36:45.1010438Z             }
2026-06-21T01:36:45.1010539Z           ]
2026-06-21T01:36:45.1010629Z         },
2026-06-21T01:36:45.1010729Z         "int": {
2026-06-21T01:36:45.1010849Z           "complete": true,
2026-06-21T01:36:45.1011069Z           "evidence": [
2026-06-21T01:36:45.1011168Z             {
2026-06-21T01:36:45.1011315Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:36:45.1011426Z               "line": 167
2026-06-21T01:36:45.1011530Z             }
2026-06-21T01:36:45.1011630Z           ]
2026-06-21T01:36:45.1011732Z         },
2026-06-21T01:36:45.1011835Z         "unit": {
2026-06-21T01:36:45.1011959Z           "complete": false,
2026-06-21T01:36:45.1012070Z           "evidence": []
2026-06-21T01:36:45.1012178Z         }
2026-06-21T01:36:45.1012279Z       }
2026-06-21T01:36:45.1012375Z     },
2026-06-21T01:36:45.1012592Z     {
2026-06-21T01:36:45.1012711Z       "id": "REQ-INSTALL-4",
2026-06-21T01:36:45.1013411Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T01:36:45.1013538Z       "requiredStages": [
2026-06-21T01:36:45.1013640Z         "impl",
2026-06-21T01:36:45.1013749Z         "unit"
2026-06-21T01:36:45.1013853Z       ],
2026-06-21T01:36:45.1013960Z       "stages": {
2026-06-21T01:36:45.1014064Z         "doc": {
2026-06-21T01:36:45.1014182Z           "complete": false,
2026-06-21T01:36:45.1014293Z           "evidence": []
2026-06-21T01:36:45.1014402Z         },
2026-06-21T01:36:45.1014506Z         "impl": {
2026-06-21T01:36:45.1014627Z           "complete": true,
2026-06-21T01:36:45.1014750Z           "evidence": [
2026-06-21T01:36:45.1014856Z             {
2026-06-21T01:36:45.1015026Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.1015151Z               "line": 165
2026-06-21T01:36:45.1015256Z             },
2026-06-21T01:36:45.1015374Z             {
2026-06-21T01:36:45.1015541Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1015658Z               "line": 29
2026-06-21T01:36:45.1015757Z             },
2026-06-21T01:36:45.1015858Z             {
2026-06-21T01:36:45.1016015Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1016134Z               "line": 288
2026-06-21T01:36:45.1016235Z             },
2026-06-21T01:36:45.1016344Z             {
2026-06-21T01:36:45.1016493Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1016593Z               "line": 356
2026-06-21T01:36:45.1016702Z             },
2026-06-21T01:36:45.1016797Z             {
2026-06-21T01:36:45.1016949Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1017059Z               "line": 386
2026-06-21T01:36:45.1017165Z             },
2026-06-21T01:36:45.1017274Z             {
2026-06-21T01:36:45.1017422Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1017532Z               "line": 434
2026-06-21T01:36:45.1017636Z             },
2026-06-21T01:36:45.1017742Z             {
2026-06-21T01:36:45.1017875Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1018002Z               "line": 5396
2026-06-21T01:36:45.1018107Z             }
2026-06-21T01:36:45.1018211Z           ]
2026-06-21T01:36:45.1018324Z         },
2026-06-21T01:36:45.1018425Z         "int": {
2026-06-21T01:36:45.1018540Z           "complete": false,
2026-06-21T01:36:45.1018658Z           "evidence": []
2026-06-21T01:36:45.1018769Z         },
2026-06-21T01:36:45.1018878Z         "unit": {
2026-06-21T01:36:45.1019055Z           "complete": true,
2026-06-21T01:36:45.1019159Z           "evidence": [
2026-06-21T01:36:45.1019258Z             {
2026-06-21T01:36:45.1019427Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.1019526Z               "line": 375
2026-06-21T01:36:45.1019631Z             },
2026-06-21T01:36:45.1019732Z             {
2026-06-21T01:36:45.1019884Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1020004Z               "line": 808
2026-06-21T01:36:45.1020212Z             },
2026-06-21T01:36:45.1020314Z             {
2026-06-21T01:36:45.1020465Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1020570Z               "line": 849
2026-06-21T01:36:45.1020676Z             },
2026-06-21T01:36:45.1020771Z             {
2026-06-21T01:36:45.1020916Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1021028Z               "line": 869
2026-06-21T01:36:45.1021132Z             },
2026-06-21T01:36:45.1021236Z             {
2026-06-21T01:36:45.1021361Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1021479Z               "line": 8403
2026-06-21T01:36:45.1021690Z             }
2026-06-21T01:36:45.1021794Z           ]
2026-06-21T01:36:45.1021900Z         }
2026-06-21T01:36:45.1022005Z       }
2026-06-21T01:36:45.1022105Z     },
2026-06-21T01:36:45.1022209Z     {
2026-06-21T01:36:45.1022325Z       "id": "REQ-INSTALL-5",
2026-06-21T01:36:45.1022868Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T01:36:45.1023005Z       "requiredStages": [
2026-06-21T01:36:45.1023105Z         "impl",
2026-06-21T01:36:45.1023214Z         "int"
2026-06-21T01:36:45.1023318Z       ],
2026-06-21T01:36:45.1023417Z       "stages": {
2026-06-21T01:36:45.1023522Z         "doc": {
2026-06-21T01:36:45.1023638Z           "complete": false,
2026-06-21T01:36:45.1023746Z           "evidence": []
2026-06-21T01:36:45.1023851Z         },
2026-06-21T01:36:45.1023956Z         "impl": {
2026-06-21T01:36:45.1024075Z           "complete": true,
2026-06-21T01:36:45.1024191Z           "evidence": [
2026-06-21T01:36:45.1024295Z             {
2026-06-21T01:36:45.1024423Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.1024534Z               "line": 5
2026-06-21T01:36:45.1024634Z             },
2026-06-21T01:36:45.1024747Z             {
2026-06-21T01:36:45.1024877Z               "path": "installer/install.sh",
2026-06-21T01:36:45.1024976Z               "line": 6
2026-06-21T01:36:45.1025086Z             }
2026-06-21T01:36:45.1025182Z           ]
2026-06-21T01:36:45.1025286Z         },
2026-06-21T01:36:45.1025386Z         "int": {
2026-06-21T01:36:45.1025511Z           "complete": true,
2026-06-21T01:36:45.1025625Z           "evidence": [
2026-06-21T01:36:45.1025731Z             {
2026-06-21T01:36:45.1025882Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T01:36:45.1025991Z               "line": 22
2026-06-21T01:36:45.1026096Z             }
2026-06-21T01:36:45.1026195Z           ]
2026-06-21T01:36:45.1026303Z         },
2026-06-21T01:36:45.1026423Z         "unit": {
2026-06-21T01:36:45.1026533Z           "complete": false,
2026-06-21T01:36:45.1026651Z           "evidence": []
2026-06-21T01:36:45.1026753Z         }
2026-06-21T01:36:45.1029452Z       }
2026-06-21T01:36:45.1029585Z     },
2026-06-21T01:36:45.1029686Z     {
2026-06-21T01:36:45.1029809Z       "id": "REQ-INSTALL-6",
2026-06-21T01:36:45.1031169Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T01:36:45.1031298Z       "requiredStages": [
2026-06-21T01:36:45.1031406Z         "impl",
2026-06-21T01:36:45.1031506Z         "unit"
2026-06-21T01:36:45.1031611Z       ],
2026-06-21T01:36:45.1031720Z       "stages": {
2026-06-21T01:36:45.1031835Z         "doc": {
2026-06-21T01:36:45.1031954Z           "complete": false,
2026-06-21T01:36:45.1032068Z           "evidence": []
2026-06-21T01:36:45.1032165Z         },
2026-06-21T01:36:45.1032274Z         "impl": {
2026-06-21T01:36:45.1032392Z           "complete": true,
2026-06-21T01:36:45.1032513Z           "evidence": [
2026-06-21T01:36:45.1032760Z             {
2026-06-21T01:36:45.1032917Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.1033027Z               "line": 61
2026-06-21T01:36:45.1033128Z             },
2026-06-21T01:36:45.1033237Z             {
2026-06-21T01:36:45.1033390Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.1033505Z               "line": 641
2026-06-21T01:36:45.1033608Z             },
2026-06-21T01:36:45.1033703Z             {
2026-06-21T01:36:45.1033860Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.1033968Z               "line": 191
2026-06-21T01:36:45.1034078Z             },
2026-06-21T01:36:45.1034292Z             {
2026-06-21T01:36:45.1034445Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.1034550Z               "line": 276
2026-06-21T01:36:45.1034654Z             },
2026-06-21T01:36:45.1034756Z             {
2026-06-21T01:36:45.1034879Z               "path": "crates/spt/src/main.rs",
2026-06-21T01:36:45.1034993Z               "line": 43
2026-06-21T01:36:45.1035094Z             },
2026-06-21T01:36:45.1035199Z             {
2026-06-21T01:36:45.1035336Z               "path": "installer/install.sh",
2026-06-21T01:36:45.1035442Z               "line": 104
2026-06-21T01:36:45.1035541Z             }
2026-06-21T01:36:45.1035641Z           ]
2026-06-21T01:36:45.1035743Z         },
2026-06-21T01:36:45.1035851Z         "int": {
2026-06-21T01:36:45.1035966Z           "complete": false,
2026-06-21T01:36:45.1036072Z           "evidence": []
2026-06-21T01:36:45.1036175Z         },
2026-06-21T01:36:45.1036281Z         "unit": {
2026-06-21T01:36:45.1036401Z           "complete": true,
2026-06-21T01:36:45.1036513Z           "evidence": [
2026-06-21T01:36:45.1036618Z             {
2026-06-21T01:36:45.1036773Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T01:36:45.1036878Z               "line": 894
2026-06-21T01:36:45.1036978Z             }
2026-06-21T01:36:45.1037084Z           ]
2026-06-21T01:36:45.1037188Z         }
2026-06-21T01:36:45.1037288Z       }
2026-06-21T01:36:45.1037393Z     },
2026-06-21T01:36:45.1037493Z     {
2026-06-21T01:36:45.1037613Z       "id": "REQ-INSTALL-7",
2026-06-21T01:36:45.1038838Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T01:36:45.1039042Z       "requiredStages": [
2026-06-21T01:36:45.1039146Z         "impl"
2026-06-21T01:36:45.1039247Z       ],
2026-06-21T01:36:45.1039354Z       "stages": {
2026-06-21T01:36:45.1039458Z         "doc": {
2026-06-21T01:36:45.1039573Z           "complete": false,
2026-06-21T01:36:45.1039683Z           "evidence": []
2026-06-21T01:36:45.1039792Z         },
2026-06-21T01:36:45.1039898Z         "impl": {
2026-06-21T01:36:45.1040017Z           "complete": true,
2026-06-21T01:36:45.1040131Z           "evidence": [
2026-06-21T01:36:45.1040227Z             {
2026-06-21T01:36:45.1040365Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1040475Z               "line": 3920
2026-06-21T01:36:45.1040580Z             },
2026-06-21T01:36:45.1040694Z             {
2026-06-21T01:36:45.1040824Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.1040942Z               "line": 157
2026-06-21T01:36:45.1041042Z             }
2026-06-21T01:36:45.1041148Z           ]
2026-06-21T01:36:45.1041242Z         },
2026-06-21T01:36:45.1041352Z         "int": {
2026-06-21T01:36:45.1041472Z           "complete": false,
2026-06-21T01:36:45.1041580Z           "evidence": []
2026-06-21T01:36:45.1041685Z         },
2026-06-21T01:36:45.1041792Z         "unit": {
2026-06-21T01:36:45.1041914Z           "complete": false,
2026-06-21T01:36:45.1042023Z           "evidence": []
2026-06-21T01:36:45.1042238Z         }
2026-06-21T01:36:45.1042347Z       }
2026-06-21T01:36:45.1042448Z     },
2026-06-21T01:36:45.1042553Z     {
2026-06-21T01:36:45.1042671Z       "id": "REQ-INSTALL-8",
2026-06-21T01:36:45.1043849Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T01:36:45.1043974Z       "requiredStages": [
2026-06-21T01:36:45.1044173Z         "impl"
2026-06-21T01:36:45.1044282Z       ],
2026-06-21T01:36:45.1044382Z       "stages": {
2026-06-21T01:36:45.1044485Z         "doc": {
2026-06-21T01:36:45.1044590Z           "complete": false,
2026-06-21T01:36:45.1044710Z           "evidence": []
2026-06-21T01:36:45.1044814Z         },
2026-06-21T01:36:45.1044923Z         "impl": {
2026-06-21T01:36:45.1045039Z           "complete": true,
2026-06-21T01:36:45.1045148Z           "evidence": [
2026-06-21T01:36:45.1045247Z             {
2026-06-21T01:36:45.1045396Z               "path": "installer/install.ps1",
2026-06-21T01:36:45.1045519Z               "line": 184
2026-06-21T01:36:45.1045630Z             },
2026-06-21T01:36:45.1045734Z             {
2026-06-21T01:36:45.1045873Z               "path": "installer/install.sh",
2026-06-21T01:36:45.1045983Z               "line": 121
2026-06-21T01:36:45.1046088Z             }
2026-06-21T01:36:45.1046187Z           ]
2026-06-21T01:36:45.1046293Z         },
2026-06-21T01:36:45.1046406Z         "int": {
2026-06-21T01:36:45.1046507Z           "complete": false,
2026-06-21T01:36:45.1046627Z           "evidence": []
2026-06-21T01:36:45.1046721Z         },
2026-06-21T01:36:45.1046827Z         "unit": {
2026-06-21T01:36:45.1046947Z           "complete": false,
2026-06-21T01:36:45.1047064Z           "evidence": []
2026-06-21T01:36:45.1047158Z         }
2026-06-21T01:36:45.1047264Z       }
2026-06-21T01:36:45.1047362Z     },
2026-06-21T01:36:45.1047466Z     {
2026-06-21T01:36:45.1047582Z       "id": "REQ-INSTALL-9",
2026-06-21T01:36:45.1048893Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T01:36:45.1049113Z       "requiredStages": [
2026-06-21T01:36:45.1049222Z         "doc",
2026-06-21T01:36:45.1049321Z         "impl",
2026-06-21T01:36:45.1049423Z         "unit"
2026-06-21T01:36:45.1049518Z       ],
2026-06-21T01:36:45.1049635Z       "stages": {
2026-06-21T01:36:45.1049740Z         "doc": {
2026-06-21T01:36:45.1049854Z           "complete": true,
2026-06-21T01:36:45.1049967Z           "evidence": [
2026-06-21T01:36:45.1050071Z             {
2026-06-21T01:36:45.1050196Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1050310Z               "line": 771
2026-06-21T01:36:45.1050410Z             }
2026-06-21T01:36:45.1050515Z           ]
2026-06-21T01:36:45.1050620Z         },
2026-06-21T01:36:45.1050720Z         "impl": {
2026-06-21T01:36:45.1050830Z           "complete": true,
2026-06-21T01:36:45.1050944Z           "evidence": [
2026-06-21T01:36:45.1051050Z             {
2026-06-21T01:36:45.1051192Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1051306Z               "line": 2535
2026-06-21T01:36:45.1051417Z             },
2026-06-21T01:36:45.1051512Z             {
2026-06-21T01:36:45.1051650Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1051769Z               "line": 2559
2026-06-21T01:36:45.1051869Z             }
2026-06-21T01:36:45.1051980Z           ]
2026-06-21T01:36:45.1052198Z         },
2026-06-21T01:36:45.1052304Z         "int": {
2026-06-21T01:36:45.1052427Z           "complete": false,
2026-06-21T01:36:45.1052531Z           "evidence": []
2026-06-21T01:36:45.1052640Z         },
2026-06-21T01:36:45.1052742Z         "unit": {
2026-06-21T01:36:45.1052864Z           "complete": true,
2026-06-21T01:36:45.1052975Z           "evidence": [
2026-06-21T01:36:45.1053075Z             {
2026-06-21T01:36:45.1053212Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1053318Z               "line": 7591
2026-06-21T01:36:45.1053428Z             },
2026-06-21T01:36:45.1053527Z             {
2026-06-21T01:36:45.1053657Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1053890Z               "line": 8433
2026-06-21T01:36:45.1053991Z             }
2026-06-21T01:36:45.1054100Z           ]
2026-06-21T01:36:45.1054200Z         }
2026-06-21T01:36:45.1054306Z       }
2026-06-21T01:36:45.1054400Z     },
2026-06-21T01:36:45.1054500Z     {
2026-06-21T01:36:45.1054611Z       "id": "REQ-KICK-1",
2026-06-21T01:36:45.1057271Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T01:36:45.1057406Z       "requiredStages": [
2026-06-21T01:36:45.1057517Z         "doc",
2026-06-21T01:36:45.1057624Z         "impl",
2026-06-21T01:36:45.1057728Z         "unit",
2026-06-21T01:36:45.1057829Z         "int"
2026-06-21T01:36:45.1057931Z       ],
2026-06-21T01:36:45.1058036Z       "stages": {
2026-06-21T01:36:45.1058137Z         "doc": {
2026-06-21T01:36:45.1058246Z           "complete": true,
2026-06-21T01:36:45.1058360Z           "evidence": [
2026-06-21T01:36:45.1058457Z             {
2026-06-21T01:36:45.1058571Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1058689Z               "line": 342
2026-06-21T01:36:45.1058795Z             }
2026-06-21T01:36:45.1058904Z           ]
2026-06-21T01:36:45.1059077Z         },
2026-06-21T01:36:45.1059185Z         "impl": {
2026-06-21T01:36:45.1059309Z           "complete": true,
2026-06-21T01:36:45.1059411Z           "evidence": [
2026-06-21T01:36:45.1059509Z             {
2026-06-21T01:36:45.1059658Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.1059773Z               "line": 41
2026-06-21T01:36:45.1059886Z             },
2026-06-21T01:36:45.1059983Z             {
2026-06-21T01:36:45.1060115Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1060224Z               "line": 701
2026-06-21T01:36:45.1060324Z             }
2026-06-21T01:36:45.1060423Z           ]
2026-06-21T01:36:45.1060522Z         },
2026-06-21T01:36:45.1060632Z         "int": {
2026-06-21T01:36:45.1060747Z           "complete": true,
2026-06-21T01:36:45.1060860Z           "evidence": [
2026-06-21T01:36:45.1060965Z             {
2026-06-21T01:36:45.1061118Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1061227Z               "line": 913
2026-06-21T01:36:45.1061347Z             }
2026-06-21T01:36:45.1061461Z           ]
2026-06-21T01:36:45.1061561Z         },
2026-06-21T01:36:45.1061672Z         "unit": {
2026-06-21T01:36:45.1061781Z           "complete": true,
2026-06-21T01:36:45.1061895Z           "evidence": [
2026-06-21T01:36:45.1062000Z             {
2026-06-21T01:36:45.1062148Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.1062372Z               "line": 205
2026-06-21T01:36:45.1062472Z             }
2026-06-21T01:36:45.1062588Z           ]
2026-06-21T01:36:45.1062691Z         }
2026-06-21T01:36:45.1062797Z       }
2026-06-21T01:36:45.1062898Z     },
2026-06-21T01:36:45.1063001Z     {
2026-06-21T01:36:45.1063133Z       "id": "REQ-MANIFEST-1",
2026-06-21T01:36:45.1063358Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T01:36:45.1063482Z       "requiredStages": [
2026-06-21T01:36:45.1063588Z         "doc",
2026-06-21T01:36:45.1063692Z         "impl",
2026-06-21T01:36:45.1063796Z         "unit"
2026-06-21T01:36:45.1063993Z       ],
2026-06-21T01:36:45.1064096Z       "stages": {
2026-06-21T01:36:45.1064198Z         "doc": {
2026-06-21T01:36:45.1064312Z           "complete": true,
2026-06-21T01:36:45.1064411Z           "evidence": [
2026-06-21T01:36:45.1064518Z             {
2026-06-21T01:36:45.1064645Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.1064760Z               "line": 19
2026-06-21T01:36:45.1064866Z             }
2026-06-21T01:36:45.1064960Z           ]
2026-06-21T01:36:45.1065055Z         },
2026-06-21T01:36:45.1065162Z         "impl": {
2026-06-21T01:36:45.1065284Z           "complete": true,
2026-06-21T01:36:45.1065398Z           "evidence": [
2026-06-21T01:36:45.1065498Z             {
2026-06-21T01:36:45.1065657Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1065768Z               "line": 18
2026-06-21T01:36:45.1065873Z             }
2026-06-21T01:36:45.1065977Z           ]
2026-06-21T01:36:45.1066082Z         },
2026-06-21T01:36:45.1066197Z         "int": {
2026-06-21T01:36:45.1066315Z           "complete": false,
2026-06-21T01:36:45.1066436Z           "evidence": []
2026-06-21T01:36:45.1066540Z         },
2026-06-21T01:36:45.1066654Z         "unit": {
2026-06-21T01:36:45.1066769Z           "complete": true,
2026-06-21T01:36:45.1066874Z           "evidence": [
2026-06-21T01:36:45.1066983Z             {
2026-06-21T01:36:45.1067141Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1067255Z               "line": 1029
2026-06-21T01:36:45.1067356Z             },
2026-06-21T01:36:45.1067461Z             {
2026-06-21T01:36:45.1067612Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1067719Z               "line": 1325
2026-06-21T01:36:45.1067822Z             },
2026-06-21T01:36:45.1067927Z             {
2026-06-21T01:36:45.1068077Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1068184Z               "line": 1337
2026-06-21T01:36:45.1068293Z             },
2026-06-21T01:36:45.1068403Z             {
2026-06-21T01:36:45.1068553Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1068673Z               "line": 1348
2026-06-21T01:36:45.1068774Z             },
2026-06-21T01:36:45.1068882Z             {
2026-06-21T01:36:45.1069108Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1069235Z               "line": 1365
2026-06-21T01:36:45.1069336Z             },
2026-06-21T01:36:45.1069446Z             {
2026-06-21T01:36:45.1069598Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1069712Z               "line": 1379
2026-06-21T01:36:45.1069821Z             },
2026-06-21T01:36:45.1069923Z             {
2026-06-21T01:36:45.1070069Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1070184Z               "line": 1495
2026-06-21T01:36:45.1070290Z             },
2026-06-21T01:36:45.1070393Z             {
2026-06-21T01:36:45.1070538Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1070657Z               "line": 1510
2026-06-21T01:36:45.1070760Z             },
2026-06-21T01:36:45.1070860Z             {
2026-06-21T01:36:45.1070993Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1071110Z               "line": 1621
2026-06-21T01:36:45.1071331Z             },
2026-06-21T01:36:45.1071439Z             {
2026-06-21T01:36:45.1071584Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1071688Z               "line": 1632
2026-06-21T01:36:45.1071792Z             }
2026-06-21T01:36:45.1071894Z           ]
2026-06-21T01:36:45.1071998Z         }
2026-06-21T01:36:45.1072107Z       }
2026-06-21T01:36:45.1072204Z     },
2026-06-21T01:36:45.1072317Z     {
2026-06-21T01:36:45.1072436Z       "id": "REQ-MANIFEST-2",
2026-06-21T01:36:45.1072989Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T01:36:45.1073219Z       "requiredStages": [
2026-06-21T01:36:45.1073328Z         "doc",
2026-06-21T01:36:45.1073434Z         "impl",
2026-06-21T01:36:45.1073543Z         "unit"
2026-06-21T01:36:45.1073647Z       ],
2026-06-21T01:36:45.1073751Z       "stages": {
2026-06-21T01:36:45.1073857Z         "doc": {
2026-06-21T01:36:45.1073980Z           "complete": true,
2026-06-21T01:36:45.1074095Z           "evidence": [
2026-06-21T01:36:45.1074200Z             {
2026-06-21T01:36:45.1074319Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1074430Z               "line": 75
2026-06-21T01:36:45.1074524Z             }
2026-06-21T01:36:45.1074628Z           ]
2026-06-21T01:36:45.1074734Z         },
2026-06-21T01:36:45.1074839Z         "impl": {
2026-06-21T01:36:45.1074953Z           "complete": true,
2026-06-21T01:36:45.1075059Z           "evidence": [
2026-06-21T01:36:45.1075167Z             {
2026-06-21T01:36:45.1075320Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1075444Z               "line": 82
2026-06-21T01:36:45.1075548Z             },
2026-06-21T01:36:45.1075659Z             {
2026-06-21T01:36:45.1075825Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1075939Z               "line": 15
2026-06-21T01:36:45.1076049Z             },
2026-06-21T01:36:45.1076147Z             {
2026-06-21T01:36:45.1076303Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1076410Z               "line": 65
2026-06-21T01:36:45.1076523Z             },
2026-06-21T01:36:45.1076628Z             {
2026-06-21T01:36:45.1076776Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1076899Z               "line": 83
2026-06-21T01:36:45.1076996Z             },
2026-06-21T01:36:45.1077100Z             {
2026-06-21T01:36:45.1077258Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1077367Z               "line": 183
2026-06-21T01:36:45.1077477Z             },
2026-06-21T01:36:45.1077577Z             {
2026-06-21T01:36:45.1077739Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1077844Z               "line": 527
2026-06-21T01:36:45.1077950Z             },
2026-06-21T01:36:45.1078054Z             {
2026-06-21T01:36:45.1078202Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1078326Z               "line": 553
2026-06-21T01:36:45.1078425Z             },
2026-06-21T01:36:45.1078531Z             {
2026-06-21T01:36:45.1078679Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1078792Z               "line": 671
2026-06-21T01:36:45.1078897Z             },
2026-06-21T01:36:45.1079071Z             {
2026-06-21T01:36:45.1079228Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1079339Z               "line": 696
2026-06-21T01:36:45.1079447Z             },
2026-06-21T01:36:45.1079548Z             {
2026-06-21T01:36:45.1079696Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1079819Z               "line": 719
2026-06-21T01:36:45.1079920Z             },
2026-06-21T01:36:45.1080029Z             {
2026-06-21T01:36:45.1080173Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1080277Z               "line": 734
2026-06-21T01:36:45.1080483Z             },
2026-06-21T01:36:45.1080588Z             {
2026-06-21T01:36:45.1080725Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1080836Z               "line": 5567
2026-06-21T01:36:45.1080940Z             },
2026-06-21T01:36:45.1081049Z             {
2026-06-21T01:36:45.1081194Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1081335Z               "line": 5581
2026-06-21T01:36:45.1081449Z             },
2026-06-21T01:36:45.1081558Z             {
2026-06-21T01:36:45.1081685Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1081795Z               "line": 5615
2026-06-21T01:36:45.1081896Z             }
2026-06-21T01:36:45.1082105Z           ]
2026-06-21T01:36:45.1082205Z         },
2026-06-21T01:36:45.1082309Z         "int": {
2026-06-21T01:36:45.1082435Z           "complete": false,
2026-06-21T01:36:45.1082539Z           "evidence": []
2026-06-21T01:36:45.1082643Z         },
2026-06-21T01:36:45.1082749Z         "unit": {
2026-06-21T01:36:45.1082882Z           "complete": true,
2026-06-21T01:36:45.1082996Z           "evidence": [
2026-06-21T01:36:45.1083098Z             {
2026-06-21T01:36:45.1083253Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1083355Z               "line": 921
2026-06-21T01:36:45.1083464Z             },
2026-06-21T01:36:45.1083559Z             {
2026-06-21T01:36:45.1083713Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1083821Z               "line": 211
2026-06-21T01:36:45.1084545Z             },
2026-06-21T01:36:45.1084664Z             {
2026-06-21T01:36:45.1084831Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1084956Z               "line": 272
2026-06-21T01:36:45.1085051Z             },
2026-06-21T01:36:45.1085164Z             {
2026-06-21T01:36:45.1085319Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1085427Z               "line": 313
2026-06-21T01:36:45.1085532Z             },
2026-06-21T01:36:45.1085643Z             {
2026-06-21T01:36:45.1085794Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1085910Z               "line": 325
2026-06-21T01:36:45.1086019Z             },
2026-06-21T01:36:45.1086128Z             {
2026-06-21T01:36:45.1086278Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1086390Z               "line": 336
2026-06-21T01:36:45.1086494Z             },
2026-06-21T01:36:45.1086604Z             {
2026-06-21T01:36:45.1086750Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1086864Z               "line": 345
2026-06-21T01:36:45.1086970Z             },
2026-06-21T01:36:45.1087069Z             {
2026-06-21T01:36:45.1087231Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1087336Z               "line": 361
2026-06-21T01:36:45.1087436Z             },
2026-06-21T01:36:45.1087542Z             {
2026-06-21T01:36:45.1087689Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1087798Z               "line": 444
2026-06-21T01:36:45.1087890Z             },
2026-06-21T01:36:45.1087994Z             {
2026-06-21T01:36:45.1088147Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1088261Z               "line": 958
2026-06-21T01:36:45.1088366Z             },
2026-06-21T01:36:45.1088467Z             {
2026-06-21T01:36:45.1088614Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1088724Z               "line": 982
2026-06-21T01:36:45.1088830Z             },
2026-06-21T01:36:45.1088933Z             {
2026-06-21T01:36:45.1089164Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1089281Z               "line": 1008
2026-06-21T01:36:45.1089390Z             },
2026-06-21T01:36:45.1089495Z             {
2026-06-21T01:36:45.1089650Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1089764Z               "line": 1027
2026-06-21T01:36:45.1090002Z             },
2026-06-21T01:36:45.1090113Z             {
2026-06-21T01:36:45.1090256Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1090365Z               "line": 1058
2026-06-21T01:36:45.1090476Z             },
2026-06-21T01:36:45.1090580Z             {
2026-06-21T01:36:45.1090728Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:45.1091223Z               "line": 309
2026-06-21T01:36:45.1091329Z             },
2026-06-21T01:36:45.1091434Z             {
2026-06-21T01:36:45.1091567Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1091678Z               "line": 606
2026-06-21T01:36:45.1091909Z             },
2026-06-21T01:36:45.1092019Z             {
2026-06-21T01:36:45.1092146Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1092254Z               "line": 8610
2026-06-21T01:36:45.1092364Z             },
2026-06-21T01:36:45.1092466Z             {
2026-06-21T01:36:45.1092603Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1092714Z               "line": 9558
2026-06-21T01:36:45.1092818Z             }
2026-06-21T01:36:45.1092922Z           ]
2026-06-21T01:36:45.1093028Z         }
2026-06-21T01:36:45.1093128Z       }
2026-06-21T01:36:45.1093227Z     },
2026-06-21T01:36:45.1093333Z     {
2026-06-21T01:36:45.1093457Z       "id": "REQ-MANIFEST-3",
2026-06-21T01:36:45.1094157Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T01:36:45.1094283Z       "requiredStages": [
2026-06-21T01:36:45.1094404Z         "doc",
2026-06-21T01:36:45.1094516Z         "impl",
2026-06-21T01:36:45.1094612Z         "unit"
2026-06-21T01:36:45.1094706Z       ],
2026-06-21T01:36:45.1094805Z       "stages": {
2026-06-21T01:36:45.1094910Z         "doc": {
2026-06-21T01:36:45.1095020Z           "complete": true,
2026-06-21T01:36:45.1095134Z           "evidence": [
2026-06-21T01:36:45.1095254Z             {
2026-06-21T01:36:45.1095377Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1095486Z               "line": 81
2026-06-21T01:36:45.1095588Z             }
2026-06-21T01:36:45.1095692Z           ]
2026-06-21T01:36:45.1095792Z         },
2026-06-21T01:36:45.1095898Z         "impl": {
2026-06-21T01:36:45.1096021Z           "complete": true,
2026-06-21T01:36:45.1096135Z           "evidence": [
2026-06-21T01:36:45.1096246Z             {
2026-06-21T01:36:45.1096402Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1096518Z               "line": 92
2026-06-21T01:36:45.1096616Z             },
2026-06-21T01:36:45.1096731Z             {
2026-06-21T01:36:45.1096894Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1096997Z               "line": 101
2026-06-21T01:36:45.1097102Z             },
2026-06-21T01:36:45.1097207Z             {
2026-06-21T01:36:45.1097357Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1097467Z               "line": 132
2026-06-21T01:36:45.1097577Z             },
2026-06-21T01:36:45.1097686Z             {
2026-06-21T01:36:45.1097835Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1097948Z               "line": 577
2026-06-21T01:36:45.1098048Z             },
2026-06-21T01:36:45.1098159Z             {
2026-06-21T01:36:45.1098306Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1098412Z               "line": 633
2026-06-21T01:36:45.1098516Z             },
2026-06-21T01:36:45.1098620Z             {
2026-06-21T01:36:45.1098755Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1098879Z               "line": 5628
2026-06-21T01:36:45.1099066Z             },
2026-06-21T01:36:45.1099174Z             {
2026-06-21T01:36:45.1099298Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1099409Z               "line": 5654
2026-06-21T01:36:45.1099502Z             }
2026-06-21T01:36:45.1099714Z           ]
2026-06-21T01:36:45.1099813Z         },
2026-06-21T01:36:45.1099926Z         "int": {
2026-06-21T01:36:45.1100041Z           "complete": false,
2026-06-21T01:36:45.1100153Z           "evidence": []
2026-06-21T01:36:45.1100257Z         },
2026-06-21T01:36:45.1100363Z         "unit": {
2026-06-21T01:36:45.1100473Z           "complete": true,
2026-06-21T01:36:45.1100586Z           "evidence": [
2026-06-21T01:36:45.1100692Z             {
2026-06-21T01:36:45.1100844Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1100964Z               "line": 371
2026-06-21T01:36:45.1101059Z             },
2026-06-21T01:36:45.1101269Z             {
2026-06-21T01:36:45.1101426Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1101540Z               "line": 429
2026-06-21T01:36:45.1101646Z             },
2026-06-21T01:36:45.1101750Z             {
2026-06-21T01:36:45.1101899Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1102023Z               "line": 1082
2026-06-21T01:36:45.1102127Z             },
2026-06-21T01:36:45.1102228Z             {
2026-06-21T01:36:45.1102352Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1102459Z               "line": 8703
2026-06-21T01:36:45.1102564Z             }
2026-06-21T01:36:45.1102669Z           ]
2026-06-21T01:36:45.1102772Z         }
2026-06-21T01:36:45.1102867Z       }
2026-06-21T01:36:45.1102973Z     },
2026-06-21T01:36:45.1103073Z     {
2026-06-21T01:36:45.1103206Z       "id": "REQ-MANIFEST-4",
2026-06-21T01:36:45.1103960Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T01:36:45.1104092Z       "requiredStages": [
2026-06-21T01:36:45.1104203Z         "doc",
2026-06-21T01:36:45.1104307Z         "impl",
2026-06-21T01:36:45.1104407Z         "unit"
2026-06-21T01:36:45.1104513Z       ],
2026-06-21T01:36:45.1104627Z       "stages": {
2026-06-21T01:36:45.1104732Z         "doc": {
2026-06-21T01:36:45.1104847Z           "complete": true,
2026-06-21T01:36:45.1104965Z           "evidence": [
2026-06-21T01:36:45.1105061Z             {
2026-06-21T01:36:45.1105186Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1105298Z               "line": 88
2026-06-21T01:36:45.1105407Z             }
2026-06-21T01:36:45.1105514Z           ]
2026-06-21T01:36:45.1105613Z         },
2026-06-21T01:36:45.1105732Z         "impl": {
2026-06-21T01:36:45.1105843Z           "complete": true,
2026-06-21T01:36:45.1105961Z           "evidence": [
2026-06-21T01:36:45.1106071Z             {
2026-06-21T01:36:45.1106219Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1106337Z               "line": 100
2026-06-21T01:36:45.1106439Z             },
2026-06-21T01:36:45.1106552Z             {
2026-06-21T01:36:45.1106690Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1106811Z               "line": 183
2026-06-21T01:36:45.1106910Z             },
2026-06-21T01:36:45.1107015Z             {
2026-06-21T01:36:45.1107510Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.1107624Z               "line": 83
2026-06-21T01:36:45.1107729Z             },
2026-06-21T01:36:45.1107837Z             {
2026-06-21T01:36:45.1107989Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1108094Z               "line": 629
2026-06-21T01:36:45.1108203Z             },
2026-06-21T01:36:45.1108304Z             {
2026-06-21T01:36:45.1108457Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1108580Z               "line": 654
2026-06-21T01:36:45.1108681Z             }
2026-06-21T01:36:45.1108781Z           ]
2026-06-21T01:36:45.1108880Z         },
2026-06-21T01:36:45.1109071Z         "int": {
2026-06-21T01:36:45.1109195Z           "complete": false,
2026-06-21T01:36:45.1109429Z           "evidence": []
2026-06-21T01:36:45.1109534Z         },
2026-06-21T01:36:45.1109630Z         "unit": {
2026-06-21T01:36:45.1109743Z           "complete": true,
2026-06-21T01:36:45.1109858Z           "evidence": [
2026-06-21T01:36:45.1109969Z             {
2026-06-21T01:36:45.1110120Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1110236Z               "line": 1445
2026-06-21T01:36:45.1110340Z             },
2026-06-21T01:36:45.1110439Z             {
2026-06-21T01:36:45.1110591Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1110699Z               "line": 1478
2026-06-21T01:36:45.1110803Z             },
2026-06-21T01:36:45.1111000Z             {
2026-06-21T01:36:45.1111141Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1111257Z               "line": 988
2026-06-21T01:36:45.1111362Z             }
2026-06-21T01:36:45.1111470Z           ]
2026-06-21T01:36:45.1111586Z         }
2026-06-21T01:36:45.1111686Z       }
2026-06-21T01:36:45.1111781Z     },
2026-06-21T01:36:45.1111882Z     {
2026-06-21T01:36:45.1112001Z       "id": "REQ-MANIFEST-5",
2026-06-21T01:36:45.1115097Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T01:36:45.1115249Z       "requiredStages": [
2026-06-21T01:36:45.1115355Z         "doc",
2026-06-21T01:36:45.1115464Z         "impl",
2026-06-21T01:36:45.1115569Z         "unit"
2026-06-21T01:36:45.1115670Z       ],
2026-06-21T01:36:45.1115779Z       "stages": {
2026-06-21T01:36:45.1115891Z         "doc": {
2026-06-21T01:36:45.1116011Z           "complete": true,
2026-06-21T01:36:45.1116131Z           "evidence": [
2026-06-21T01:36:45.1116225Z             {
2026-06-21T01:36:45.1116350Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1116474Z               "line": 83
2026-06-21T01:36:45.1116578Z             }
2026-06-21T01:36:45.1116674Z           ]
2026-06-21T01:36:45.1116764Z         },
2026-06-21T01:36:45.1116878Z         "impl": {
2026-06-21T01:36:45.1116984Z           "complete": true,
2026-06-21T01:36:45.1117093Z           "evidence": [
2026-06-21T01:36:45.1117202Z             {
2026-06-21T01:36:45.1117356Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1117471Z               "line": 120
2026-06-21T01:36:45.1117570Z             }
2026-06-21T01:36:45.1117681Z           ]
2026-06-21T01:36:45.1117779Z         },
2026-06-21T01:36:45.1117885Z         "int": {
2026-06-21T01:36:45.1118010Z           "complete": false,
2026-06-21T01:36:45.1118117Z           "evidence": []
2026-06-21T01:36:45.1118217Z         },
2026-06-21T01:36:45.1118323Z         "unit": {
2026-06-21T01:36:45.1118449Z           "complete": true,
2026-06-21T01:36:45.1118559Z           "evidence": [
2026-06-21T01:36:45.1118669Z             {
2026-06-21T01:36:45.1121493Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T01:36:45.1121649Z               "line": 404
2026-06-21T01:36:45.1121760Z             },
2026-06-21T01:36:45.1121860Z             {
2026-06-21T01:36:45.1122026Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1122307Z               "line": 1155
2026-06-21T01:36:45.1122408Z             },
2026-06-21T01:36:45.1122508Z             {
2026-06-21T01:36:45.1122661Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1122781Z               "line": 1184
2026-06-21T01:36:45.1122884Z             },
2026-06-21T01:36:45.1122990Z             {
2026-06-21T01:36:45.1123143Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1123252Z               "line": 1224
2026-06-21T01:36:45.1123358Z             },
2026-06-21T01:36:45.1123458Z             {
2026-06-21T01:36:45.1123603Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1123826Z               "line": 1239
2026-06-21T01:36:45.1123930Z             }
2026-06-21T01:36:45.1124036Z           ]
2026-06-21T01:36:45.1124127Z         }
2026-06-21T01:36:45.1124231Z       }
2026-06-21T01:36:45.1124326Z     },
2026-06-21T01:36:45.1124432Z     {
2026-06-21T01:36:45.1124555Z       "id": "REQ-MANIFEST-6",
2026-06-21T01:36:45.1126910Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T01:36:45.1127044Z       "requiredStages": [
2026-06-21T01:36:45.1127152Z         "doc",
2026-06-21T01:36:45.1127254Z         "unit"
2026-06-21T01:36:45.1127363Z       ],
2026-06-21T01:36:45.1127472Z       "stages": {
2026-06-21T01:36:45.1127578Z         "doc": {
2026-06-21T01:36:45.1127702Z           "complete": true,
2026-06-21T01:36:45.1127816Z           "evidence": [
2026-06-21T01:36:45.1127921Z             {
2026-06-21T01:36:45.1128040Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1128150Z               "line": 141
2026-06-21T01:36:45.1128255Z             }
2026-06-21T01:36:45.1128359Z           ]
2026-06-21T01:36:45.1128464Z         },
2026-06-21T01:36:45.1128570Z         "impl": {
2026-06-21T01:36:45.1128692Z           "complete": false,
2026-06-21T01:36:45.1128802Z           "evidence": []
2026-06-21T01:36:45.1128901Z         },
2026-06-21T01:36:45.1129085Z         "int": {
2026-06-21T01:36:45.1129205Z           "complete": false,
2026-06-21T01:36:45.1129333Z           "evidence": []
2026-06-21T01:36:45.1129438Z         },
2026-06-21T01:36:45.1129539Z         "unit": {
2026-06-21T01:36:45.1129652Z           "complete": true,
2026-06-21T01:36:45.1129763Z           "evidence": [
2026-06-21T01:36:45.1129868Z             {
2026-06-21T01:36:45.1130029Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.1130140Z               "line": 1261
2026-06-21T01:36:45.1130240Z             }
2026-06-21T01:36:45.1130349Z           ]
2026-06-21T01:36:45.1130450Z         }
2026-06-21T01:36:45.1130559Z       }
2026-06-21T01:36:45.1130659Z     },
2026-06-21T01:36:45.1130765Z     {
2026-06-21T01:36:45.1130887Z       "id": "REQ-MANIFEST-7",
2026-06-21T01:36:45.1134088Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T01:36:45.1134372Z       "requiredStages": [
2026-06-21T01:36:45.1134476Z         "doc",
2026-06-21T01:36:45.1134581Z         "impl",
2026-06-21T01:36:45.1134683Z         "unit"
2026-06-21T01:36:45.1134796Z       ],
2026-06-21T01:36:45.1134901Z       "stages": {
2026-06-21T01:36:45.1135096Z         "doc": {
2026-06-21T01:36:45.1135216Z           "complete": true,
2026-06-21T01:36:45.1135325Z           "evidence": [
2026-06-21T01:36:45.1135425Z             {
2026-06-21T01:36:45.1135565Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.1135678Z               "line": 35
2026-06-21T01:36:45.1135778Z             }
2026-06-21T01:36:45.1135889Z           ]
2026-06-21T01:36:45.1135993Z         },
2026-06-21T01:36:45.1136098Z         "impl": {
2026-06-21T01:36:45.1136218Z           "complete": true,
2026-06-21T01:36:45.1136326Z           "evidence": [
2026-06-21T01:36:45.1136426Z             {
2026-06-21T01:36:45.1136579Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1136694Z               "line": 54
2026-06-21T01:36:45.1136795Z             }
2026-06-21T01:36:45.1136904Z           ]
2026-06-21T01:36:45.1137003Z         },
2026-06-21T01:36:45.1137107Z         "int": {
2026-06-21T01:36:45.1137232Z           "complete": false,
2026-06-21T01:36:45.1137336Z           "evidence": []
2026-06-21T01:36:45.1137456Z         },
2026-06-21T01:36:45.1137556Z         "unit": {
2026-06-21T01:36:45.1137675Z           "complete": true,
2026-06-21T01:36:45.1137786Z           "evidence": [
2026-06-21T01:36:45.1137890Z             {
2026-06-21T01:36:45.1138047Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1138161Z               "line": 1638
2026-06-21T01:36:45.1138257Z             }
2026-06-21T01:36:45.1138361Z           ]
2026-06-21T01:36:45.1138467Z         }
2026-06-21T01:36:45.1138562Z       }
2026-06-21T01:36:45.1138661Z     },
2026-06-21T01:36:45.1138763Z     {
2026-06-21T01:36:45.1138890Z       "id": "REQ-MANIFEST-8",
2026-06-21T01:36:45.1141306Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T01:36:45.1141447Z       "requiredStages": [
2026-06-21T01:36:45.1141538Z         "doc",
2026-06-21T01:36:45.1141649Z         "impl",
2026-06-21T01:36:45.1141743Z         "unit",
2026-06-21T01:36:45.1141853Z         "int"
2026-06-21T01:36:45.1141954Z       ],
2026-06-21T01:36:45.1142063Z       "stages": {
2026-06-21T01:36:45.1142171Z         "doc": {
2026-06-21T01:36:45.1142281Z           "complete": true,
2026-06-21T01:36:45.1142399Z           "evidence": [
2026-06-21T01:36:45.1142488Z             {
2026-06-21T01:36:45.1142613Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1142732Z               "line": 184
2026-06-21T01:36:45.1142841Z             },
2026-06-21T01:36:45.1142952Z             {
2026-06-21T01:36:45.1143080Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.1143190Z               "line": 46
2026-06-21T01:36:45.1143295Z             }
2026-06-21T01:36:45.1143400Z           ]
2026-06-21T01:36:45.1143495Z         },
2026-06-21T01:36:45.1143719Z         "impl": {
2026-06-21T01:36:45.1143839Z           "complete": true,
2026-06-21T01:36:45.1143953Z           "evidence": [
2026-06-21T01:36:45.1144053Z             {
2026-06-21T01:36:45.1144211Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1144319Z               "line": 222
2026-06-21T01:36:45.1144430Z             },
2026-06-21T01:36:45.1144526Z             {
2026-06-21T01:36:45.1144672Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.1144781Z               "line": 306
2026-06-21T01:36:45.1144882Z             }
2026-06-21T01:36:45.1144984Z           ]
2026-06-21T01:36:45.1145185Z         },
2026-06-21T01:36:45.1145289Z         "int": {
2026-06-21T01:36:45.1145403Z           "complete": true,
2026-06-21T01:36:45.1145519Z           "evidence": [
2026-06-21T01:36:45.1145614Z             {
2026-06-21T01:36:45.1145771Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T01:36:45.1145885Z               "line": 18
2026-06-21T01:36:45.1145990Z             }
2026-06-21T01:36:45.1146101Z           ]
2026-06-21T01:36:45.1146190Z         },
2026-06-21T01:36:45.1146299Z         "unit": {
2026-06-21T01:36:45.1146401Z           "complete": true,
2026-06-21T01:36:45.1146510Z           "evidence": [
2026-06-21T01:36:45.1146614Z             {
2026-06-21T01:36:45.1146773Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1146891Z               "line": 1656
2026-06-21T01:36:45.1146991Z             },
2026-06-21T01:36:45.1147098Z             {
2026-06-21T01:36:45.1147244Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1147369Z               "line": 316
2026-06-21T01:36:45.1147473Z             },
2026-06-21T01:36:45.1147572Z             {
2026-06-21T01:36:45.1147730Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1147839Z               "line": 332
2026-06-21T01:36:45.1147943Z             },
2026-06-21T01:36:45.1148045Z             {
2026-06-21T01:36:45.1148206Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1148312Z               "line": 345
2026-06-21T01:36:45.1148421Z             },
2026-06-21T01:36:45.1148521Z             {
2026-06-21T01:36:45.1148665Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.1148769Z               "line": 422
2026-06-21T01:36:45.1148878Z             },
2026-06-21T01:36:45.1149060Z             {
2026-06-21T01:36:45.1149198Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T01:36:45.1149314Z               "line": 436
2026-06-21T01:36:45.1149413Z             }
2026-06-21T01:36:45.1149518Z           ]
2026-06-21T01:36:45.1149629Z         }
2026-06-21T01:36:45.1149727Z       }
2026-06-21T01:36:45.1149831Z     },
2026-06-21T01:36:45.1149936Z     {
2026-06-21T01:36:45.1150054Z       "id": "REQ-MESH-1",
2026-06-21T01:36:45.1152294Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T01:36:45.1152418Z       "requiredStages": [
2026-06-21T01:36:45.1152524Z         "impl",
2026-06-21T01:36:45.1152632Z         "unit",
2026-06-21T01:36:45.1152736Z         "int"
2026-06-21T01:36:45.1152837Z       ],
2026-06-21T01:36:45.1152940Z       "stages": {
2026-06-21T01:36:45.1153048Z         "doc": {
2026-06-21T01:36:45.1153168Z           "complete": false,
2026-06-21T01:36:45.1153288Z           "evidence": []
2026-06-21T01:36:45.1153512Z         },
2026-06-21T01:36:45.1153617Z         "impl": {
2026-06-21T01:36:45.1153735Z           "complete": true,
2026-06-21T01:36:45.1153846Z           "evidence": [
2026-06-21T01:36:45.1153950Z             {
2026-06-21T01:36:45.1154104Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1154226Z               "line": 922
2026-06-21T01:36:45.1154331Z             },
2026-06-21T01:36:45.1154437Z             {
2026-06-21T01:36:45.1154594Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1154699Z               "line": 38
2026-06-21T01:36:45.1154805Z             },
2026-06-21T01:36:45.1154995Z             {
2026-06-21T01:36:45.1155157Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1155265Z               "line": 161
2026-06-21T01:36:45.1155375Z             },
2026-06-21T01:36:45.1155479Z             {
2026-06-21T01:36:45.1155625Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1155755Z               "line": 206
2026-06-21T01:36:45.1155859Z             },
2026-06-21T01:36:45.1155963Z             {
2026-06-21T01:36:45.1156116Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1156225Z               "line": 57
2026-06-21T01:36:45.1156336Z             },
2026-06-21T01:36:45.1156436Z             {
2026-06-21T01:36:45.1156607Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1156723Z               "line": 24
2026-06-21T01:36:45.1156822Z             },
2026-06-21T01:36:45.1156922Z             {
2026-06-21T01:36:45.1157084Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1157213Z               "line": 142
2026-06-21T01:36:45.1157314Z             },
2026-06-21T01:36:45.1157418Z             {
2026-06-21T01:36:45.1157576Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1157682Z               "line": 162
2026-06-21T01:36:45.1157790Z             }
2026-06-21T01:36:45.1157886Z           ]
2026-06-21T01:36:45.1157982Z         },
2026-06-21T01:36:45.1158080Z         "int": {
2026-06-21T01:36:45.1158189Z           "complete": true,
2026-06-21T01:36:45.1158305Z           "evidence": [
2026-06-21T01:36:45.1158404Z             {
2026-06-21T01:36:45.1158562Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:36:45.1158667Z               "line": 67
2026-06-21T01:36:45.1158766Z             },
2026-06-21T01:36:45.1158862Z             {
2026-06-21T01:36:45.1159119Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:36:45.1159230Z               "line": 93
2026-06-21T01:36:45.1159334Z             },
2026-06-21T01:36:45.1159438Z             {
2026-06-21T01:36:45.1159597Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:36:45.1159701Z               "line": 117
2026-06-21T01:36:45.1159801Z             },
2026-06-21T01:36:45.1159907Z             {
2026-06-21T01:36:45.1160073Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T01:36:45.1160174Z               "line": 134
2026-06-21T01:36:45.1160274Z             }
2026-06-21T01:36:45.1160373Z           ]
2026-06-21T01:36:45.1160482Z         },
2026-06-21T01:36:45.1160586Z         "unit": {
2026-06-21T01:36:45.1160709Z           "complete": true,
2026-06-21T01:36:45.1160823Z           "evidence": [
2026-06-21T01:36:45.1160919Z             {
2026-06-21T01:36:45.1161080Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1161181Z               "line": 427
2026-06-21T01:36:45.1161281Z             },
2026-06-21T01:36:45.1161385Z             {
2026-06-21T01:36:45.1161553Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1161667Z               "line": 376
2026-06-21T01:36:45.1161768Z             },
2026-06-21T01:36:45.1161877Z             {
2026-06-21T01:36:45.1162029Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1162249Z               "line": 412
2026-06-21T01:36:45.1162348Z             },
2026-06-21T01:36:45.1162450Z             {
2026-06-21T01:36:45.1162616Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1162727Z               "line": 427
2026-06-21T01:36:45.1162831Z             },
2026-06-21T01:36:45.1162926Z             {
2026-06-21T01:36:45.1163080Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1163188Z               "line": 438
2026-06-21T01:36:45.1163287Z             },
2026-06-21T01:36:45.1163392Z             {
2026-06-21T01:36:45.1163547Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1163777Z               "line": 449
2026-06-21T01:36:45.1163881Z             },
2026-06-21T01:36:45.1163986Z             {
2026-06-21T01:36:45.1164139Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1164243Z               "line": 460
2026-06-21T01:36:45.1164358Z             },
2026-06-21T01:36:45.1164458Z             {
2026-06-21T01:36:45.1164625Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1164740Z               "line": 496
2026-06-21T01:36:45.1164849Z             },
2026-06-21T01:36:45.1164954Z             {
2026-06-21T01:36:45.1165111Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1165216Z               "line": 519
2026-06-21T01:36:45.1165322Z             },
2026-06-21T01:36:45.1165426Z             {
2026-06-21T01:36:45.1165584Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1165694Z               "line": 546
2026-06-21T01:36:45.1165806Z             }
2026-06-21T01:36:45.1165911Z           ]
2026-06-21T01:36:45.1166011Z         }
2026-06-21T01:36:45.1166114Z       }
2026-06-21T01:36:45.1166213Z     },
2026-06-21T01:36:45.1166305Z     {
2026-06-21T01:36:45.1166424Z       "id": "REQ-MESH-2",
2026-06-21T01:36:45.1169217Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T01:36:45.1169364Z       "requiredStages": [
2026-06-21T01:36:45.1169466Z         "impl",
2026-06-21T01:36:45.1169570Z         "unit",
2026-06-21T01:36:45.1169674Z         "int"
2026-06-21T01:36:45.1169775Z       ],
2026-06-21T01:36:45.1169880Z       "stages": {
2026-06-21T01:36:45.1169979Z         "doc": {
2026-06-21T01:36:45.1170100Z           "complete": false,
2026-06-21T01:36:45.1170213Z           "evidence": []
2026-06-21T01:36:45.1170323Z         },
2026-06-21T01:36:45.1170429Z         "impl": {
2026-06-21T01:36:45.1170551Z           "complete": true,
2026-06-21T01:36:45.1170652Z           "evidence": [
2026-06-21T01:36:45.1170763Z             {
2026-06-21T01:36:45.1170914Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1171023Z               "line": 757
2026-06-21T01:36:45.1171128Z             },
2026-06-21T01:36:45.1171240Z             {
2026-06-21T01:36:45.1171388Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1171494Z               "line": 118
2026-06-21T01:36:45.1171593Z             },
2026-06-21T01:36:45.1171698Z             {
2026-06-21T01:36:45.1171850Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1172080Z               "line": 347
2026-06-21T01:36:45.1172184Z             },
2026-06-21T01:36:45.1172294Z             {
2026-06-21T01:36:45.1172447Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1172561Z               "line": 389
2026-06-21T01:36:45.1172667Z             },
2026-06-21T01:36:45.1172771Z             {
2026-06-21T01:36:45.1172923Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1173024Z               "line": 403
2026-06-21T01:36:45.1173133Z             },
2026-06-21T01:36:45.1173238Z             {
2026-06-21T01:36:45.1173391Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1173611Z               "line": 492
2026-06-21T01:36:45.1173715Z             },
2026-06-21T01:36:45.1173819Z             {
2026-06-21T01:36:45.1173967Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1174079Z               "line": 507
2026-06-21T01:36:45.1174192Z             },
2026-06-21T01:36:45.1174294Z             {
2026-06-21T01:36:45.1174441Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1174551Z               "line": 534
2026-06-21T01:36:45.1174652Z             },
2026-06-21T01:36:45.1174760Z             {
2026-06-21T01:36:45.1174910Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1175023Z               "line": 207
2026-06-21T01:36:45.1175127Z             },
2026-06-21T01:36:45.1175234Z             {
2026-06-21T01:36:45.1175381Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1175490Z               "line": 755
2026-06-21T01:36:45.1175600Z             },
2026-06-21T01:36:45.1175714Z             {
2026-06-21T01:36:45.1175878Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1175990Z               "line": 816
2026-06-21T01:36:45.1176095Z             },
2026-06-21T01:36:45.1176202Z             {
2026-06-21T01:36:45.1176357Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1176466Z               "line": 869
2026-06-21T01:36:45.1176571Z             },
2026-06-21T01:36:45.1176679Z             {
2026-06-21T01:36:45.1176832Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1176942Z               "line": 891
2026-06-21T01:36:45.1177045Z             },
2026-06-21T01:36:45.1177151Z             {
2026-06-21T01:36:45.1177294Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.1177403Z               "line": 122
2026-06-21T01:36:45.1177509Z             },
2026-06-21T01:36:45.1177609Z             {
2026-06-21T01:36:45.1177762Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1177867Z               "line": 44
2026-06-21T01:36:45.1177971Z             },
2026-06-21T01:36:45.1178066Z             {
2026-06-21T01:36:45.1178214Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1178323Z               "line": 184
2026-06-21T01:36:45.1178430Z             },
2026-06-21T01:36:45.1178539Z             {
2026-06-21T01:36:45.1178677Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1178797Z               "line": 211
2026-06-21T01:36:45.1178900Z             },
2026-06-21T01:36:45.1179074Z             {
2026-06-21T01:36:45.1179229Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1179328Z               "line": 251
2026-06-21T01:36:45.1179439Z             },
2026-06-21T01:36:45.1179544Z             {
2026-06-21T01:36:45.1179692Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1179811Z               "line": 275
2026-06-21T01:36:45.1179924Z             },
2026-06-21T01:36:45.1180026Z             {
2026-06-21T01:36:45.1180169Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1180292Z               "line": 289
2026-06-21T01:36:45.1180388Z             },
2026-06-21T01:36:45.1180502Z             {
2026-06-21T01:36:45.1180641Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1180864Z               "line": 300
2026-06-21T01:36:45.1180970Z             },
2026-06-21T01:36:45.1181070Z             {
2026-06-21T01:36:45.1181207Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1181314Z               "line": 313
2026-06-21T01:36:45.1181422Z             }
2026-06-21T01:36:45.1181531Z           ]
2026-06-21T01:36:45.1181636Z         },
2026-06-21T01:36:45.1181739Z         "int": {
2026-06-21T01:36:45.1181848Z           "complete": true,
2026-06-21T01:36:45.1181953Z           "evidence": [
2026-06-21T01:36:45.1182059Z             {
2026-06-21T01:36:45.1182373Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T01:36:45.1182496Z               "line": 116
2026-06-21T01:36:45.1182602Z             },
2026-06-21T01:36:45.1182707Z             {
2026-06-21T01:36:45.1182864Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T01:36:45.1182978Z               "line": 181
2026-06-21T01:36:45.1183087Z             }
2026-06-21T01:36:45.1183193Z           ]
2026-06-21T01:36:45.1183302Z         },
2026-06-21T01:36:45.1183402Z         "unit": {
2026-06-21T01:36:45.1183527Z           "complete": true,
2026-06-21T01:36:45.1183641Z           "evidence": [
2026-06-21T01:36:45.1183750Z             {
2026-06-21T01:36:45.1183904Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1184022Z               "line": 999
2026-06-21T01:36:45.1184128Z             },
2026-06-21T01:36:45.1184224Z             {
2026-06-21T01:36:45.1184379Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1184503Z               "line": 1016
2026-06-21T01:36:45.1184606Z             },
2026-06-21T01:36:45.1184710Z             {
2026-06-21T01:36:45.1184859Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1184972Z               "line": 1024
2026-06-21T01:36:45.1185072Z             },
2026-06-21T01:36:45.1185183Z             {
2026-06-21T01:36:45.1185335Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1185450Z               "line": 1048
2026-06-21T01:36:45.1185555Z             },
2026-06-21T01:36:45.1185649Z             {
2026-06-21T01:36:45.1185803Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1185917Z               "line": 1499
2026-06-21T01:36:45.1186031Z             },
2026-06-21T01:36:45.1186132Z             {
2026-06-21T01:36:45.1186274Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1186385Z               "line": 347
2026-06-21T01:36:45.1186494Z             },
2026-06-21T01:36:45.1186608Z             {
2026-06-21T01:36:45.1186748Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1186870Z               "line": 370
2026-06-21T01:36:45.1186974Z             },
2026-06-21T01:36:45.1187079Z             {
2026-06-21T01:36:45.1187225Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1187344Z               "line": 407
2026-06-21T01:36:45.1187445Z             },
2026-06-21T01:36:45.1187535Z             {
2026-06-21T01:36:45.1187682Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1187793Z               "line": 431
2026-06-21T01:36:45.1187902Z             },
2026-06-21T01:36:45.1187992Z             {
2026-06-21T01:36:45.1188126Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1188240Z               "line": 483
2026-06-21T01:36:45.1188346Z             },
2026-06-21T01:36:45.1188450Z             {
2026-06-21T01:36:45.1188598Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1188718Z               "line": 499
2026-06-21T01:36:45.1188827Z             },
2026-06-21T01:36:45.1188927Z             {
2026-06-21T01:36:45.1189242Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1189343Z               "line": 514
2026-06-21T01:36:45.1189451Z             },
2026-06-21T01:36:45.1189662Z             {
2026-06-21T01:36:45.1189808Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1189927Z               "line": 531
2026-06-21T01:36:45.1190028Z             }
2026-06-21T01:36:45.1190127Z           ]
2026-06-21T01:36:45.1190227Z         }
2026-06-21T01:36:45.1190333Z       }
2026-06-21T01:36:45.1190433Z     },
2026-06-21T01:36:45.1190537Z     {
2026-06-21T01:36:45.1190662Z       "id": "REQ-MESH-3",
2026-06-21T01:36:45.1192446Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T01:36:45.1192675Z       "requiredStages": [
2026-06-21T01:36:45.1192780Z         "impl",
2026-06-21T01:36:45.1192886Z         "unit",
2026-06-21T01:36:45.1192990Z         "int"
2026-06-21T01:36:45.1193094Z       ],
2026-06-21T01:36:45.1193205Z       "stages": {
2026-06-21T01:36:45.1193314Z         "doc": {
2026-06-21T01:36:45.1193434Z           "complete": false,
2026-06-21T01:36:45.1193548Z           "evidence": []
2026-06-21T01:36:45.1193648Z         },
2026-06-21T01:36:45.1193763Z         "impl": {
2026-06-21T01:36:45.1193877Z           "complete": true,
2026-06-21T01:36:45.1193996Z           "evidence": [
2026-06-21T01:36:45.1194097Z             {
2026-06-21T01:36:45.1194253Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.1194368Z               "line": 641
2026-06-21T01:36:45.1194469Z             }
2026-06-21T01:36:45.1194572Z           ]
2026-06-21T01:36:45.1194664Z         },
2026-06-21T01:36:45.1194765Z         "int": {
2026-06-21T01:36:45.1194887Z           "complete": true,
2026-06-21T01:36:45.1194991Z           "evidence": [
2026-06-21T01:36:45.1195092Z             {
2026-06-21T01:36:45.1195242Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T01:36:45.1195352Z               "line": 373
2026-06-21T01:36:45.1195457Z             },
2026-06-21T01:36:45.1195561Z             {
2026-06-21T01:36:45.1195710Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T01:36:45.1195820Z               "line": 436
2026-06-21T01:36:45.1195928Z             }
2026-06-21T01:36:45.1196030Z           ]
2026-06-21T01:36:45.1196134Z         },
2026-06-21T01:36:45.1196233Z         "unit": {
2026-06-21T01:36:45.1196363Z           "complete": true,
2026-06-21T01:36:45.1196472Z           "evidence": [
2026-06-21T01:36:45.1196577Z             {
2026-06-21T01:36:45.1196735Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.1196844Z               "line": 910
2026-06-21T01:36:45.1196950Z             }
2026-06-21T01:36:45.1197050Z           ]
2026-06-21T01:36:45.1197158Z         }
2026-06-21T01:36:45.1197260Z       }
2026-06-21T01:36:45.1197365Z     },
2026-06-21T01:36:45.1197468Z     {
2026-06-21T01:36:45.1197577Z       "id": "REQ-MESH-4",
2026-06-21T01:36:45.1200002Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T01:36:45.1200260Z       "requiredStages": [
2026-06-21T01:36:45.1200364Z         "impl",
2026-06-21T01:36:45.1200468Z         "unit",
2026-06-21T01:36:45.1200569Z         "int"
2026-06-21T01:36:45.1200669Z       ],
2026-06-21T01:36:45.1200769Z       "stages": {
2026-06-21T01:36:45.1200879Z         "doc": {
2026-06-21T01:36:45.1200993Z           "complete": false,
2026-06-21T01:36:45.1201098Z           "evidence": []
2026-06-21T01:36:45.1201203Z         },
2026-06-21T01:36:45.1201303Z         "impl": {
2026-06-21T01:36:45.1201422Z           "complete": true,
2026-06-21T01:36:45.1201537Z           "evidence": [
2026-06-21T01:36:45.1201641Z             {
2026-06-21T01:36:45.1201937Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:45.1202042Z               "line": 33
2026-06-21T01:36:45.1202143Z             },
2026-06-21T01:36:45.1202237Z             {
2026-06-21T01:36:45.1202415Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1202519Z               "line": 68
2026-06-21T01:36:45.1202622Z             },
2026-06-21T01:36:45.1202727Z             {
2026-06-21T01:36:45.1202878Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1202982Z               "line": 111
2026-06-21T01:36:45.1203087Z             },
2026-06-21T01:36:45.1203189Z             {
2026-06-21T01:36:45.1203340Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1203446Z               "line": 462
2026-06-21T01:36:45.1203550Z             },
2026-06-21T01:36:45.1203654Z             {
2026-06-21T01:36:45.1203817Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1203921Z               "line": 711
2026-06-21T01:36:45.1204023Z             },
2026-06-21T01:36:45.1204118Z             {
2026-06-21T01:36:45.1204270Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1204385Z               "line": 725
2026-06-21T01:36:45.1204490Z             },
2026-06-21T01:36:45.1204604Z             {
2026-06-21T01:36:45.1204747Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.1204870Z               "line": 132
2026-06-21T01:36:45.1204968Z             },
2026-06-21T01:36:45.1205072Z             {
2026-06-21T01:36:45.1205229Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1205339Z               "line": 26
2026-06-21T01:36:45.1205452Z             },
2026-06-21T01:36:45.1205551Z             {
2026-06-21T01:36:45.1205699Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1205807Z               "line": 97
2026-06-21T01:36:45.1205912Z             },
2026-06-21T01:36:45.1206027Z             {
2026-06-21T01:36:45.1206169Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1206275Z               "line": 119
2026-06-21T01:36:45.1206380Z             },
2026-06-21T01:36:45.1206493Z             {
2026-06-21T01:36:45.1206647Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1206760Z               "line": 82
2026-06-21T01:36:45.1206865Z             },
2026-06-21T01:36:45.1206952Z             {
2026-06-21T01:36:45.1207094Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1207200Z               "line": 111
2026-06-21T01:36:45.1207309Z             },
2026-06-21T01:36:45.1207409Z             {
2026-06-21T01:36:45.1207553Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1207656Z               "line": 232
2026-06-21T01:36:45.1207762Z             },
2026-06-21T01:36:45.1207868Z             {
2026-06-21T01:36:45.1208014Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1208142Z               "line": 245
2026-06-21T01:36:45.1208247Z             },
2026-06-21T01:36:45.1208345Z             {
2026-06-21T01:36:45.1208478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1208599Z               "line": 4665
2026-06-21T01:36:45.1208697Z             }
2026-06-21T01:36:45.1208798Z           ]
2026-06-21T01:36:45.1209074Z         },
2026-06-21T01:36:45.1209185Z         "int": {
2026-06-21T01:36:45.1209299Z           "complete": true,
2026-06-21T01:36:45.1209418Z           "evidence": [
2026-06-21T01:36:45.1209518Z             {
2026-06-21T01:36:45.1209680Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T01:36:45.1209786Z               "line": 98
2026-06-21T01:36:45.1209890Z             },
2026-06-21T01:36:45.1209995Z             {
2026-06-21T01:36:45.1210144Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T01:36:45.1210257Z               "line": 140
2026-06-21T01:36:45.1210357Z             }
2026-06-21T01:36:45.1210581Z           ]
2026-06-21T01:36:45.1210682Z         },
2026-06-21T01:36:45.1210787Z         "unit": {
2026-06-21T01:36:45.1210909Z           "complete": true,
2026-06-21T01:36:45.1211019Z           "evidence": [
2026-06-21T01:36:45.1211129Z             {
2026-06-21T01:36:45.1211290Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:45.1211410Z               "line": 178
2026-06-21T01:36:45.1211515Z             },
2026-06-21T01:36:45.1211619Z             {
2026-06-21T01:36:45.1211787Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:45.1211896Z               "line": 242
2026-06-21T01:36:45.1212006Z             },
2026-06-21T01:36:45.1212106Z             {
2026-06-21T01:36:45.1212268Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1212383Z               "line": 1079
2026-06-21T01:36:45.1212487Z             },
2026-06-21T01:36:45.1212587Z             {
2026-06-21T01:36:45.1212741Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1212869Z               "line": 1109
2026-06-21T01:36:45.1212970Z             },
2026-06-21T01:36:45.1213070Z             {
2026-06-21T01:36:45.1213226Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T01:36:45.1213340Z               "line": 1129
2026-06-21T01:36:45.1213448Z             },
2026-06-21T01:36:45.1213557Z             {
2026-06-21T01:36:45.1213725Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T01:36:45.1213833Z               "line": 602
2026-06-21T01:36:45.1213939Z             },
2026-06-21T01:36:45.1214048Z             {
2026-06-21T01:36:45.1214200Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1214316Z               "line": 148
2026-06-21T01:36:45.1214420Z             },
2026-06-21T01:36:45.1214520Z             {
2026-06-21T01:36:45.1214669Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1214773Z               "line": 169
2026-06-21T01:36:45.1214883Z             },
2026-06-21T01:36:45.1214988Z             {
2026-06-21T01:36:45.1215135Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1217846Z               "line": 181
2026-06-21T01:36:45.1217983Z             },
2026-06-21T01:36:45.1218085Z             {
2026-06-21T01:36:45.1218254Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T01:36:45.1218380Z               "line": 202
2026-06-21T01:36:45.1218485Z             },
2026-06-21T01:36:45.1218588Z             {
2026-06-21T01:36:45.1218736Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1218844Z               "line": 375
2026-06-21T01:36:45.1219039Z             },
2026-06-21T01:36:45.1219130Z             {
2026-06-21T01:36:45.1219277Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1219377Z               "line": 407
2026-06-21T01:36:45.1219487Z             },
2026-06-21T01:36:45.1219591Z             {
2026-06-21T01:36:45.1219731Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1219845Z               "line": 10052
2026-06-21T01:36:45.1219954Z             }
2026-06-21T01:36:45.1220060Z           ]
2026-06-21T01:36:45.1220164Z         }
2026-06-21T01:36:45.1220278Z       }
2026-06-21T01:36:45.1220375Z     },
2026-06-21T01:36:45.1220464Z     {
2026-06-21T01:36:45.1220718Z       "id": "REQ-MESH-5",
2026-06-21T01:36:45.1222262Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T01:36:45.1222428Z       "requiredStages": [
2026-06-21T01:36:45.1222533Z         "impl",
2026-06-21T01:36:45.1222738Z         "unit"
2026-06-21T01:36:45.1222837Z       ],
2026-06-21T01:36:45.1222948Z       "stages": {
2026-06-21T01:36:45.1223052Z         "doc": {
2026-06-21T01:36:45.1223162Z           "complete": false,
2026-06-21T01:36:45.1223272Z           "evidence": []
2026-06-21T01:36:45.1223367Z         },
2026-06-21T01:36:45.1223477Z         "impl": {
2026-06-21T01:36:45.1223601Z           "complete": true,
2026-06-21T01:36:45.1223705Z           "evidence": [
2026-06-21T01:36:45.1223814Z             {
2026-06-21T01:36:45.1223970Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1224083Z               "line": 61
2026-06-21T01:36:45.1224189Z             },
2026-06-21T01:36:45.1224295Z             {
2026-06-21T01:36:45.1224441Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1224552Z               "line": 109
2026-06-21T01:36:45.1224656Z             },
2026-06-21T01:36:45.1224755Z             {
2026-06-21T01:36:45.1224914Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1225023Z               "line": 104
2026-06-21T01:36:45.1225134Z             },
2026-06-21T01:36:45.1225238Z             {
2026-06-21T01:36:45.1225390Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.1225505Z               "line": 105
2026-06-21T01:36:45.1225600Z             },
2026-06-21T01:36:45.1225704Z             {
2026-06-21T01:36:45.1225872Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1225977Z               "line": 85
2026-06-21T01:36:45.1226083Z             },
2026-06-21T01:36:45.1226187Z             {
2026-06-21T01:36:45.1226359Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1226469Z               "line": 250
2026-06-21T01:36:45.1226568Z             },
2026-06-21T01:36:45.1226667Z             {
2026-06-21T01:36:45.1226824Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1226932Z               "line": 314
2026-06-21T01:36:45.1227042Z             },
2026-06-21T01:36:45.1227152Z             {
2026-06-21T01:36:45.1227303Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1227409Z               "line": 767
2026-06-21T01:36:45.1227519Z             },
2026-06-21T01:36:45.1227623Z             {
2026-06-21T01:36:45.1227772Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.1227885Z               "line": 101
2026-06-21T01:36:45.1227985Z             },
2026-06-21T01:36:45.1228087Z             {
2026-06-21T01:36:45.1228224Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1228325Z               "line": 193
2026-06-21T01:36:45.1228430Z             }
2026-06-21T01:36:45.1228529Z           ]
2026-06-21T01:36:45.1228635Z         },
2026-06-21T01:36:45.1228745Z         "int": {
2026-06-21T01:36:45.1228858Z           "complete": false,
2026-06-21T01:36:45.1229050Z           "evidence": []
2026-06-21T01:36:45.1229148Z         },
2026-06-21T01:36:45.1229257Z         "unit": {
2026-06-21T01:36:45.1229381Z           "complete": true,
2026-06-21T01:36:45.1229484Z           "evidence": [
2026-06-21T01:36:45.1229589Z             {
2026-06-21T01:36:45.1229743Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1229856Z               "line": 1009
2026-06-21T01:36:45.1230062Z             },
2026-06-21T01:36:45.1230166Z             {
2026-06-21T01:36:45.1230319Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T01:36:45.1230424Z               "line": 462
2026-06-21T01:36:45.1230533Z             }
2026-06-21T01:36:45.1230639Z           ]
2026-06-21T01:36:45.1230744Z         }
2026-06-21T01:36:45.1230848Z       }
2026-06-21T01:36:45.1230954Z     },
2026-06-21T01:36:45.1231054Z     {
2026-06-21T01:36:45.1231167Z       "id": "REQ-MESH-6",
2026-06-21T01:36:45.1232497Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T01:36:45.1232725Z       "requiredStages": [
2026-06-21T01:36:45.1232832Z         "impl",
2026-06-21T01:36:45.1232941Z         "unit"
2026-06-21T01:36:45.1233045Z       ],
2026-06-21T01:36:45.1233156Z       "stages": {
2026-06-21T01:36:45.1233260Z         "doc": {
2026-06-21T01:36:45.1233384Z           "complete": false,
2026-06-21T01:36:45.1233490Z           "evidence": []
2026-06-21T01:36:45.1233598Z         },
2026-06-21T01:36:45.1233703Z         "impl": {
2026-06-21T01:36:45.1233819Z           "complete": true,
2026-06-21T01:36:45.1233932Z           "evidence": [
2026-06-21T01:36:45.1234032Z             {
2026-06-21T01:36:45.1234171Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1234284Z               "line": 4181
2026-06-21T01:36:45.1234393Z             }
2026-06-21T01:36:45.1234498Z           ]
2026-06-21T01:36:45.1234601Z         },
2026-06-21T01:36:45.1234706Z         "int": {
2026-06-21T01:36:45.1234821Z           "complete": false,
2026-06-21T01:36:45.1234925Z           "evidence": []
2026-06-21T01:36:45.1235030Z         },
2026-06-21T01:36:45.1235136Z         "unit": {
2026-06-21T01:36:45.1235254Z           "complete": true,
2026-06-21T01:36:45.1235354Z           "evidence": [
2026-06-21T01:36:45.1235464Z             {
2026-06-21T01:36:45.1235597Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1235713Z               "line": 10602
2026-06-21T01:36:45.1235817Z             },
2026-06-21T01:36:45.1235922Z             {
2026-06-21T01:36:45.1236052Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1236165Z               "line": 10629
2026-06-21T01:36:45.1236269Z             },
2026-06-21T01:36:45.1236376Z             {
2026-06-21T01:36:45.1236503Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1236619Z               "line": 10653
2026-06-21T01:36:45.1236719Z             }
2026-06-21T01:36:45.1236827Z           ]
2026-06-21T01:36:45.1236929Z         }
2026-06-21T01:36:45.1237034Z       }
2026-06-21T01:36:45.1237133Z     },
2026-06-21T01:36:45.1237241Z     {
2026-06-21T01:36:45.1237360Z       "id": "REQ-MIGRATE-1",
2026-06-21T01:36:45.1237568Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T01:36:45.1237693Z       "requiredStages": [],
2026-06-21T01:36:45.1237802Z       "stages": {
2026-06-21T01:36:45.1237907Z         "doc": {
2026-06-21T01:36:45.1238022Z           "complete": false,
2026-06-21T01:36:45.1238140Z           "evidence": []
2026-06-21T01:36:45.1238246Z         },
2026-06-21T01:36:45.1238356Z         "impl": {
2026-06-21T01:36:45.1238474Z           "complete": false,
2026-06-21T01:36:45.1238585Z           "evidence": []
2026-06-21T01:36:45.1238689Z         },
2026-06-21T01:36:45.1238789Z         "int": {
2026-06-21T01:36:45.1238914Z           "complete": false,
2026-06-21T01:36:45.1239113Z           "evidence": []
2026-06-21T01:36:45.1239215Z         },
2026-06-21T01:36:45.1239328Z         "unit": {
2026-06-21T01:36:45.1239437Z           "complete": false,
2026-06-21T01:36:45.1239544Z           "evidence": []
2026-06-21T01:36:45.1239643Z         }
2026-06-21T01:36:45.1239866Z       }
2026-06-21T01:36:45.1239965Z     },
2026-06-21T01:36:45.1240068Z     {
2026-06-21T01:36:45.1240188Z       "id": "REQ-MSG-1",
2026-06-21T01:36:45.1240669Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T01:36:45.1240788Z       "requiredStages": [
2026-06-21T01:36:45.1240889Z         "impl",
2026-06-21T01:36:45.1240998Z         "unit",
2026-06-21T01:36:45.1241103Z         "int"
2026-06-21T01:36:45.1241208Z       ],
2026-06-21T01:36:45.1241309Z       "stages": {
2026-06-21T01:36:45.1241413Z         "doc": {
2026-06-21T01:36:45.1241628Z           "complete": false,
2026-06-21T01:36:45.1241737Z           "evidence": []
2026-06-21T01:36:45.1241843Z         },
2026-06-21T01:36:45.1241942Z         "impl": {
2026-06-21T01:36:45.1242062Z           "complete": true,
2026-06-21T01:36:45.1242181Z           "evidence": [
2026-06-21T01:36:45.1242286Z             {
2026-06-21T01:36:45.1242458Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1242562Z               "line": 28
2026-06-21T01:36:45.1242666Z             },
2026-06-21T01:36:45.1242766Z             {
2026-06-21T01:36:45.1242914Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1243023Z               "line": 94
2026-06-21T01:36:45.1243124Z             },
2026-06-21T01:36:45.1243233Z             {
2026-06-21T01:36:45.1243363Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1243472Z               "line": 127
2026-06-21T01:36:45.1243581Z             },
2026-06-21T01:36:45.1243687Z             {
2026-06-21T01:36:45.1243834Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1243949Z               "line": 149
2026-06-21T01:36:45.1244060Z             },
2026-06-21T01:36:45.1244163Z             {
2026-06-21T01:36:45.1244312Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1244426Z               "line": 174
2026-06-21T01:36:45.1244530Z             },
2026-06-21T01:36:45.1244636Z             {
2026-06-21T01:36:45.1244778Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:36:45.1244891Z               "line": 18
2026-06-21T01:36:45.1244997Z             },
2026-06-21T01:36:45.1245100Z             {
2026-06-21T01:36:45.1245246Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.1245348Z               "line": 13
2026-06-21T01:36:45.1245457Z             },
2026-06-21T01:36:45.1245561Z             {
2026-06-21T01:36:45.1245701Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.1245814Z               "line": 62
2026-06-21T01:36:45.1245910Z             },
2026-06-21T01:36:45.1246015Z             {
2026-06-21T01:36:45.1246153Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1246268Z               "line": 13
2026-06-21T01:36:45.1246373Z             }
2026-06-21T01:36:45.1246472Z           ]
2026-06-21T01:36:45.1246568Z         },
2026-06-21T01:36:45.1246682Z         "int": {
2026-06-21T01:36:45.1246792Z           "complete": true,
2026-06-21T01:36:45.1246898Z           "evidence": [
2026-06-21T01:36:45.1247001Z             {
2026-06-21T01:36:45.1247174Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:36:45.1247284Z               "line": 9
2026-06-21T01:36:45.1247388Z             },
2026-06-21T01:36:45.1247484Z             {
2026-06-21T01:36:45.1247645Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:36:45.1247754Z               "line": 56
2026-06-21T01:36:45.1247859Z             },
2026-06-21T01:36:45.1247962Z             {
2026-06-21T01:36:45.1248138Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:36:45.1248248Z               "line": 113
2026-06-21T01:36:45.1248357Z             }
2026-06-21T01:36:45.1248472Z           ]
2026-06-21T01:36:45.1248573Z         },
2026-06-21T01:36:45.1248676Z         "unit": {
2026-06-21T01:36:45.1248868Z           "complete": true,
2026-06-21T01:36:45.1249062Z           "evidence": [
2026-06-21T01:36:45.1249164Z             {
2026-06-21T01:36:45.1249306Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1249416Z               "line": 203
2026-06-21T01:36:45.1249516Z             },
2026-06-21T01:36:45.1249616Z             {
2026-06-21T01:36:45.1249760Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1249869Z               "line": 232
2026-06-21T01:36:45.1249974Z             },
2026-06-21T01:36:45.1250075Z             {
2026-06-21T01:36:45.1250222Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1250431Z               "line": 277
2026-06-21T01:36:45.1250534Z             },
2026-06-21T01:36:45.1250637Z             {
2026-06-21T01:36:45.1250786Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1250896Z               "line": 300
2026-06-21T01:36:45.1250995Z             },
2026-06-21T01:36:45.1251106Z             {
2026-06-21T01:36:45.1251234Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T01:36:45.1251343Z               "line": 325
2026-06-21T01:36:45.1251449Z             },
2026-06-21T01:36:45.1251558Z             {
2026-06-21T01:36:45.1251707Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:36:45.1251820Z               "line": 204
2026-06-21T01:36:45.1251930Z             },
2026-06-21T01:36:45.1252031Z             {
2026-06-21T01:36:45.1252183Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:36:45.1252293Z               "line": 237
2026-06-21T01:36:45.1252412Z             },
2026-06-21T01:36:45.1252522Z             {
2026-06-21T01:36:45.1252656Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:36:45.1252765Z               "line": 251
2026-06-21T01:36:45.1252865Z             },
2026-06-21T01:36:45.1252966Z             {
2026-06-21T01:36:45.1253108Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:36:45.1253226Z               "line": 263
2026-06-21T01:36:45.1253336Z             },
2026-06-21T01:36:45.1253437Z             {
2026-06-21T01:36:45.1253569Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.1253680Z               "line": 162
2026-06-21T01:36:45.1253789Z             },
2026-06-21T01:36:45.1253893Z             {
2026-06-21T01:36:45.1254028Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T01:36:45.1254136Z               "line": 242
2026-06-21T01:36:45.1254242Z             },
2026-06-21T01:36:45.1254352Z             {
2026-06-21T01:36:45.1254484Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1254591Z               "line": 134
2026-06-21T01:36:45.1254699Z             },
2026-06-21T01:36:45.1254794Z             {
2026-06-21T01:36:45.1254939Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1255047Z               "line": 153
2026-06-21T01:36:45.1255153Z             }
2026-06-21T01:36:45.1255254Z           ]
2026-06-21T01:36:45.1255361Z         }
2026-06-21T01:36:45.1255461Z       }
2026-06-21T01:36:45.1255571Z     },
2026-06-21T01:36:45.1255669Z     {
2026-06-21T01:36:45.1255778Z       "id": "REQ-MSG-2",
2026-06-21T01:36:45.1256098Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T01:36:45.1256218Z       "requiredStages": [
2026-06-21T01:36:45.1256332Z         "impl",
2026-06-21T01:36:45.1256436Z         "unit"
2026-06-21T01:36:45.1256538Z       ],
2026-06-21T01:36:45.1256651Z       "stages": {
2026-06-21T01:36:45.1256760Z         "doc": {
2026-06-21T01:36:45.1256881Z           "complete": false,
2026-06-21T01:36:45.1256994Z           "evidence": []
2026-06-21T01:36:45.1257104Z         },
2026-06-21T01:36:45.1257210Z         "impl": {
2026-06-21T01:36:45.1257333Z           "complete": true,
2026-06-21T01:36:45.1257443Z           "evidence": [
2026-06-21T01:36:45.1257548Z             {
2026-06-21T01:36:45.1257686Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1257895Z               "line": 11
2026-06-21T01:36:45.1258001Z             },
2026-06-21T01:36:45.1258102Z             {
2026-06-21T01:36:45.1258243Z               "path": "crates/spt/src/main.rs",
2026-06-21T01:36:45.1258361Z               "line": 8
2026-06-21T01:36:45.1258462Z             }
2026-06-21T01:36:45.1258569Z           ]
2026-06-21T01:36:45.1258669Z         },
2026-06-21T01:36:45.1258775Z         "int": {
2026-06-21T01:36:45.1258884Z           "complete": false,
2026-06-21T01:36:45.1259076Z           "evidence": []
2026-06-21T01:36:45.1259176Z         },
2026-06-21T01:36:45.1259284Z         "unit": {
2026-06-21T01:36:45.1259505Z           "complete": true,
2026-06-21T01:36:45.1259618Z           "evidence": [
2026-06-21T01:36:45.1259724Z             {
2026-06-21T01:36:45.1259847Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1259971Z               "line": 7717
2026-06-21T01:36:45.1260072Z             },
2026-06-21T01:36:45.1260176Z             {
2026-06-21T01:36:45.1260315Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1260420Z               "line": 7759
2026-06-21T01:36:45.1260524Z             },
2026-06-21T01:36:45.1260621Z             {
2026-06-21T01:36:45.1260749Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1260862Z               "line": 7808
2026-06-21T01:36:45.1260966Z             },
2026-06-21T01:36:45.1261071Z             {
2026-06-21T01:36:45.1261193Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1261313Z               "line": 7831
2026-06-21T01:36:45.1261414Z             },
2026-06-21T01:36:45.1261517Z             {
2026-06-21T01:36:45.1261661Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1261761Z               "line": 9807
2026-06-21T01:36:45.1261865Z             },
2026-06-21T01:36:45.1261966Z             {
2026-06-21T01:36:45.1262090Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1262199Z               "line": 9816
2026-06-21T01:36:45.1262310Z             },
2026-06-21T01:36:45.1262424Z             {
2026-06-21T01:36:45.1262557Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1262672Z               "line": 9830
2026-06-21T01:36:45.1262776Z             }
2026-06-21T01:36:45.1262872Z           ]
2026-06-21T01:36:45.1262977Z         }
2026-06-21T01:36:45.1263077Z       }
2026-06-21T01:36:45.1263187Z     },
2026-06-21T01:36:45.1263278Z     {
2026-06-21T01:36:45.1263391Z       "id": "REQ-MSG-3",
2026-06-21T01:36:45.1263819Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T01:36:45.1263949Z       "requiredStages": [
2026-06-21T01:36:45.1264058Z         "impl",
2026-06-21T01:36:45.1264168Z         "unit",
2026-06-21T01:36:45.1264268Z         "int"
2026-06-21T01:36:45.1264373Z       ],
2026-06-21T01:36:45.1264473Z       "stages": {
2026-06-21T01:36:45.1264578Z         "doc": {
2026-06-21T01:36:45.1264706Z           "complete": false,
2026-06-21T01:36:45.1264807Z           "evidence": []
2026-06-21T01:36:45.1264907Z         },
2026-06-21T01:36:45.1265016Z         "impl": {
2026-06-21T01:36:45.1265132Z           "complete": true,
2026-06-21T01:36:45.1265246Z           "evidence": [
2026-06-21T01:36:45.1265350Z             {
2026-06-21T01:36:45.1265499Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T01:36:45.1265602Z               "line": 19
2026-06-21T01:36:45.1265713Z             },
2026-06-21T01:36:45.1265824Z             {
2026-06-21T01:36:45.1265964Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1266074Z               "line": 21
2026-06-21T01:36:45.1266179Z             },
2026-06-21T01:36:45.1266291Z             {
2026-06-21T01:36:45.1266429Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1266545Z               "line": 48
2026-06-21T01:36:45.1266653Z             },
2026-06-21T01:36:45.1266749Z             {
2026-06-21T01:36:45.1266996Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1267103Z               "line": 174
2026-06-21T01:36:45.1267207Z             }
2026-06-21T01:36:45.1267306Z           ]
2026-06-21T01:36:45.1267412Z         },
2026-06-21T01:36:45.1267512Z         "int": {
2026-06-21T01:36:45.1267621Z           "complete": true,
2026-06-21T01:36:45.1267741Z           "evidence": [
2026-06-21T01:36:45.1267841Z             {
2026-06-21T01:36:45.1268013Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:36:45.1268122Z               "line": 10
2026-06-21T01:36:45.1268222Z             },
2026-06-21T01:36:45.1268324Z             {
2026-06-21T01:36:45.1268565Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T01:36:45.1268681Z               "line": 56
2026-06-21T01:36:45.1268780Z             }
2026-06-21T01:36:45.1268884Z           ]
2026-06-21T01:36:45.1269083Z         },
2026-06-21T01:36:45.1269182Z         "unit": {
2026-06-21T01:36:45.1269306Z           "complete": true,
2026-06-21T01:36:45.1269417Z           "evidence": [
2026-06-21T01:36:45.1269520Z             {
2026-06-21T01:36:45.1269655Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1269769Z               "line": 228
2026-06-21T01:36:45.1269873Z             },
2026-06-21T01:36:45.1269975Z             {
2026-06-21T01:36:45.1270116Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1270231Z               "line": 247
2026-06-21T01:36:45.1270331Z             },
2026-06-21T01:36:45.1270436Z             {
2026-06-21T01:36:45.1270575Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1270688Z               "line": 270
2026-06-21T01:36:45.1270789Z             }
2026-06-21T01:36:45.1270890Z           ]
2026-06-21T01:36:45.1270989Z         }
2026-06-21T01:36:45.1271118Z       }
2026-06-21T01:36:45.1271209Z     },
2026-06-21T01:36:45.1271332Z     {
2026-06-21T01:36:45.1271450Z       "id": "REQ-MSG-4",
2026-06-21T01:36:45.1272331Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T01:36:45.1272474Z       "requiredStages": [
2026-06-21T01:36:45.1272579Z         "impl",
2026-06-21T01:36:45.1272688Z         "unit",
2026-06-21T01:36:45.1272789Z         "int"
2026-06-21T01:36:45.1272893Z       ],
2026-06-21T01:36:45.1272989Z       "stages": {
2026-06-21T01:36:45.1273084Z         "doc": {
2026-06-21T01:36:45.1273208Z           "complete": false,
2026-06-21T01:36:45.1273322Z           "evidence": []
2026-06-21T01:36:45.1273442Z         },
2026-06-21T01:36:45.1273542Z         "impl": {
2026-06-21T01:36:45.1273661Z           "complete": true,
2026-06-21T01:36:45.1273776Z           "evidence": [
2026-06-21T01:36:45.1273861Z             {
2026-06-21T01:36:45.1274004Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1274111Z               "line": 19
2026-06-21T01:36:45.1274214Z             },
2026-06-21T01:36:45.1274317Z             {
2026-06-21T01:36:45.1274456Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1274566Z               "line": 46
2026-06-21T01:36:45.1274665Z             },
2026-06-21T01:36:45.1274766Z             {
2026-06-21T01:36:45.1274914Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1275019Z               "line": 532
2026-06-21T01:36:45.1275124Z             },
2026-06-21T01:36:45.1275233Z             {
2026-06-21T01:36:45.1275362Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1275472Z               "line": 3110
2026-06-21T01:36:45.1275581Z             }
2026-06-21T01:36:45.1275682Z           ]
2026-06-21T01:36:45.1275787Z         },
2026-06-21T01:36:45.1275887Z         "int": {
2026-06-21T01:36:45.1276007Z           "complete": true,
2026-06-21T01:36:45.1276116Z           "evidence": [
2026-06-21T01:36:45.1276336Z             {
2026-06-21T01:36:45.1276492Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:36:45.1276596Z               "line": 98
2026-06-21T01:36:45.1276705Z             },
2026-06-21T01:36:45.1276809Z             {
2026-06-21T01:36:45.1276966Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T01:36:45.1277081Z               "line": 128
2026-06-21T01:36:45.1277189Z             }
2026-06-21T01:36:45.1277290Z           ]
2026-06-21T01:36:45.1277390Z         },
2026-06-21T01:36:45.1277504Z         "unit": {
2026-06-21T01:36:45.1277624Z           "complete": true,
2026-06-21T01:36:45.1277738Z           "evidence": [
2026-06-21T01:36:45.1277939Z             {
2026-06-21T01:36:45.1278067Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1278186Z               "line": 68
2026-06-21T01:36:45.1278282Z             },
2026-06-21T01:36:45.1278391Z             {
2026-06-21T01:36:45.1278530Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1278645Z               "line": 79
2026-06-21T01:36:45.1278754Z             },
2026-06-21T01:36:45.1278859Z             {
2026-06-21T01:36:45.1279053Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1279164Z               "line": 90
2026-06-21T01:36:45.1279270Z             },
2026-06-21T01:36:45.1279377Z             {
2026-06-21T01:36:45.1279516Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1279629Z               "line": 151
2026-06-21T01:36:45.1279728Z             }
2026-06-21T01:36:45.1279833Z           ]
2026-06-21T01:36:45.1279933Z         }
2026-06-21T01:36:45.1280033Z       }
2026-06-21T01:36:45.1280132Z     },
2026-06-21T01:36:45.1280239Z     {
2026-06-21T01:36:45.1280357Z       "id": "REQ-MSG-5",
2026-06-21T01:36:45.1281169Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T01:36:45.1281286Z       "requiredStages": [
2026-06-21T01:36:45.1281383Z         "doc",
2026-06-21T01:36:45.1281479Z         "impl",
2026-06-21T01:36:45.1281587Z         "unit"
2026-06-21T01:36:45.1281688Z       ],
2026-06-21T01:36:45.1281799Z       "stages": {
2026-06-21T01:36:45.1281902Z         "doc": {
2026-06-21T01:36:45.1282024Z           "complete": true,
2026-06-21T01:36:45.1282130Z           "evidence": [
2026-06-21T01:36:45.1282233Z             {
2026-06-21T01:36:45.1282360Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1282486Z               "line": 231
2026-06-21T01:36:45.1282585Z             }
2026-06-21T01:36:45.1282690Z           ]
2026-06-21T01:36:45.1282791Z         },
2026-06-21T01:36:45.1282895Z         "impl": {
2026-06-21T01:36:45.1283014Z           "complete": true,
2026-06-21T01:36:45.1283134Z           "evidence": [
2026-06-21T01:36:45.1283234Z             {
2026-06-21T01:36:45.1283387Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.1283496Z               "line": 60
2026-06-21T01:36:45.1283601Z             },
2026-06-21T01:36:45.1283707Z             {
2026-06-21T01:36:45.1283863Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1283978Z               "line": 126
2026-06-21T01:36:45.1284079Z             },
2026-06-21T01:36:45.1284183Z             {
2026-06-21T01:36:45.1284322Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1284440Z               "line": 135
2026-06-21T01:36:45.1284540Z             },
2026-06-21T01:36:45.1284651Z             {
2026-06-21T01:36:45.1284802Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1284911Z               "line": 149
2026-06-21T01:36:45.1285016Z             },
2026-06-21T01:36:45.1285117Z             {
2026-06-21T01:36:45.1285264Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1285379Z               "line": 178
2026-06-21T01:36:45.1285584Z             },
2026-06-21T01:36:45.1285689Z             {
2026-06-21T01:36:45.1285822Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1285937Z               "line": 2802
2026-06-21T01:36:45.1286027Z             }
2026-06-21T01:36:45.1286136Z           ]
2026-06-21T01:36:45.1286242Z         },
2026-06-21T01:36:45.1286347Z         "int": {
2026-06-21T01:36:45.1286466Z           "complete": true,
2026-06-21T01:36:45.1286577Z           "evidence": [
2026-06-21T01:36:45.1286681Z             {
2026-06-21T01:36:45.1286818Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T01:36:45.1286929Z               "line": 19
2026-06-21T01:36:45.1287132Z             }
2026-06-21T01:36:45.1287233Z           ]
2026-06-21T01:36:45.1287341Z         },
2026-06-21T01:36:45.1287435Z         "unit": {
2026-06-21T01:36:45.1287559Z           "complete": true,
2026-06-21T01:36:45.1287665Z           "evidence": [
2026-06-21T01:36:45.1287773Z             {
2026-06-21T01:36:45.1287903Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.1288017Z               "line": 192
2026-06-21T01:36:45.1288126Z             },
2026-06-21T01:36:45.1288232Z             {
2026-06-21T01:36:45.1288388Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:36:45.1288495Z               "line": 154
2026-06-21T01:36:45.1288599Z             },
2026-06-21T01:36:45.1288708Z             {
2026-06-21T01:36:45.1288847Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1289051Z               "line": 122
2026-06-21T01:36:45.1289153Z             },
2026-06-21T01:36:45.1289257Z             {
2026-06-21T01:36:45.1289410Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1289529Z               "line": 452
2026-06-21T01:36:45.1289638Z             },
2026-06-21T01:36:45.1289739Z             {
2026-06-21T01:36:45.1289882Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1289985Z               "line": 501
2026-06-21T01:36:45.1290090Z             },
2026-06-21T01:36:45.1290185Z             {
2026-06-21T01:36:45.1290340Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1290445Z               "line": 517
2026-06-21T01:36:45.1290551Z             },
2026-06-21T01:36:45.1290659Z             {
2026-06-21T01:36:45.1290799Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1290908Z               "line": 536
2026-06-21T01:36:45.1291012Z             },
2026-06-21T01:36:45.1291119Z             {
2026-06-21T01:36:45.1291246Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1291356Z               "line": 7660
2026-06-21T01:36:45.1291462Z             }
2026-06-21T01:36:45.1291566Z           ]
2026-06-21T01:36:45.1291666Z         }
2026-06-21T01:36:45.1291772Z       }
2026-06-21T01:36:45.1291876Z     },
2026-06-21T01:36:45.1291971Z     {
2026-06-21T01:36:45.1292082Z       "id": "REQ-MSG-6",
2026-06-21T01:36:45.1293817Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T01:36:45.1293938Z       "requiredStages": [
2026-06-21T01:36:45.1294042Z         "doc",
2026-06-21T01:36:45.1294151Z         "impl",
2026-06-21T01:36:45.1294252Z         "unit"
2026-06-21T01:36:45.1294361Z       ],
2026-06-21T01:36:45.1294466Z       "stages": {
2026-06-21T01:36:45.1294572Z         "doc": {
2026-06-21T01:36:45.1294685Z           "complete": true,
2026-06-21T01:36:45.1294790Z           "evidence": [
2026-06-21T01:36:45.1294892Z             {
2026-06-21T01:36:45.1295014Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1295235Z               "line": 234
2026-06-21T01:36:45.1295338Z             }
2026-06-21T01:36:45.1295443Z           ]
2026-06-21T01:36:45.1295548Z         },
2026-06-21T01:36:45.1295653Z         "impl": {
2026-06-21T01:36:45.1295781Z           "complete": true,
2026-06-21T01:36:45.1295877Z           "evidence": [
2026-06-21T01:36:45.1295978Z             {
2026-06-21T01:36:45.1296144Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1296268Z               "line": 177
2026-06-21T01:36:45.1296372Z             },
2026-06-21T01:36:45.1296478Z             {
2026-06-21T01:36:45.1296645Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1296851Z               "line": 428
2026-06-21T01:36:45.1296959Z             },
2026-06-21T01:36:45.1297059Z             {
2026-06-21T01:36:45.1297227Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1297336Z               "line": 451
2026-06-21T01:36:45.1297441Z             },
2026-06-21T01:36:45.1297551Z             {
2026-06-21T01:36:45.1297687Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.1297807Z               "line": 89
2026-06-21T01:36:45.1297905Z             },
2026-06-21T01:36:45.1298014Z             {
2026-06-21T01:36:45.1298163Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.1298277Z               "line": 155
2026-06-21T01:36:45.1298386Z             }
2026-06-21T01:36:45.1298482Z           ]
2026-06-21T01:36:45.1298587Z         },
2026-06-21T01:36:45.1298691Z         "int": {
2026-06-21T01:36:45.1298816Z           "complete": false,
2026-06-21T01:36:45.1299021Z           "evidence": []
2026-06-21T01:36:45.1299121Z         },
2026-06-21T01:36:45.1299235Z         "unit": {
2026-06-21T01:36:45.1299354Z           "complete": true,
2026-06-21T01:36:45.1299473Z           "evidence": [
2026-06-21T01:36:45.1299578Z             {
2026-06-21T01:36:45.1299741Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1299859Z               "line": 1746
2026-06-21T01:36:45.1299960Z             },
2026-06-21T01:36:45.1300065Z             {
2026-06-21T01:36:45.1300208Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.1300318Z               "line": 219
2026-06-21T01:36:45.1300423Z             }
2026-06-21T01:36:45.1303009Z           ]
2026-06-21T01:36:45.1303145Z         }
2026-06-21T01:36:45.1303250Z       }
2026-06-21T01:36:45.1303358Z     },
2026-06-21T01:36:45.1303457Z     {
2026-06-21T01:36:45.1303582Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T01:36:45.1307524Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T01:36:45.1307697Z       "requiredStages": [
2026-06-21T01:36:45.1307801Z         "doc",
2026-06-21T01:36:45.1307905Z         "impl",
2026-06-21T01:36:45.1308011Z         "unit",
2026-06-21T01:36:45.1308257Z         "int"
2026-06-21T01:36:45.1308362Z       ],
2026-06-21T01:36:45.1308470Z       "stages": {
2026-06-21T01:36:45.1308574Z         "doc": {
2026-06-21T01:36:45.1308685Z           "complete": true,
2026-06-21T01:36:45.1308790Z           "evidence": [
2026-06-21T01:36:45.1308893Z             {
2026-06-21T01:36:45.1309261Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T01:36:45.1309390Z               "line": 47
2026-06-21T01:36:45.1309494Z             }
2026-06-21T01:36:45.1309595Z           ]
2026-06-21T01:36:45.1309700Z         },
2026-06-21T01:36:45.1309809Z         "impl": {
2026-06-21T01:36:45.1310062Z           "complete": true,
2026-06-21T01:36:45.1310176Z           "evidence": [
2026-06-21T01:36:45.1310283Z             {
2026-06-21T01:36:45.1310424Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1310530Z               "line": 20
2026-06-21T01:36:45.1310635Z             },
2026-06-21T01:36:45.1310739Z             {
2026-06-21T01:36:45.1310883Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1310992Z               "line": 33
2026-06-21T01:36:45.1311124Z             },
2026-06-21T01:36:45.1311215Z             {
2026-06-21T01:36:45.1311375Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1311484Z               "line": 47
2026-06-21T01:36:45.1311595Z             },
2026-06-21T01:36:45.1311694Z             {
2026-06-21T01:36:45.1311823Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1311934Z               "line": 58
2026-06-21T01:36:45.1312033Z             },
2026-06-21T01:36:45.1312138Z             {
2026-06-21T01:36:45.1312277Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1312386Z               "line": 14
2026-06-21T01:36:45.1312496Z             },
2026-06-21T01:36:45.1312596Z             {
2026-06-21T01:36:45.1312743Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1312859Z               "line": 27
2026-06-21T01:36:45.1312962Z             },
2026-06-21T01:36:45.1313063Z             {
2026-06-21T01:36:45.1313207Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1313310Z               "line": 40
2026-06-21T01:36:45.1313416Z             },
2026-06-21T01:36:45.1313512Z             {
2026-06-21T01:36:45.1313653Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.1313772Z               "line": 92
2026-06-21T01:36:45.1313876Z             },
2026-06-21T01:36:45.1313984Z             {
2026-06-21T01:36:45.1314132Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1314243Z               "line": 143
2026-06-21T01:36:45.1314351Z             },
2026-06-21T01:36:45.1314448Z             {
2026-06-21T01:36:45.1314595Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1314699Z               "line": 216
2026-06-21T01:36:45.1314810Z             },
2026-06-21T01:36:45.1314910Z             {
2026-06-21T01:36:45.1315058Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1315158Z               "line": 533
2026-06-21T01:36:45.1315267Z             },
2026-06-21T01:36:45.1315373Z             {
2026-06-21T01:36:45.1315510Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T01:36:45.1315625Z               "line": 78
2026-06-21T01:36:45.1315735Z             },
2026-06-21T01:36:45.1315834Z             {
2026-06-21T01:36:45.1315978Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1316093Z               "line": 3111
2026-06-21T01:36:45.1316187Z             }
2026-06-21T01:36:45.1316288Z           ]
2026-06-21T01:36:45.1316394Z         },
2026-06-21T01:36:45.1316506Z         "int": {
2026-06-21T01:36:45.1316620Z           "complete": true,
2026-06-21T01:36:45.1316735Z           "evidence": [
2026-06-21T01:36:45.1316844Z             {
2026-06-21T01:36:45.1316997Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T01:36:45.1317103Z               "line": 15
2026-06-21T01:36:45.1317303Z             }
2026-06-21T01:36:45.1317407Z           ]
2026-06-21T01:36:45.1317507Z         },
2026-06-21T01:36:45.1317613Z         "unit": {
2026-06-21T01:36:45.1317727Z           "complete": true,
2026-06-21T01:36:45.1317845Z           "evidence": [
2026-06-21T01:36:45.1317942Z             {
2026-06-21T01:36:45.1318079Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1318194Z               "line": 102
2026-06-21T01:36:45.1318300Z             },
2026-06-21T01:36:45.1318403Z             {
2026-06-21T01:36:45.1318537Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T01:36:45.1318643Z               "line": 137
2026-06-21T01:36:45.1318812Z             },
2026-06-21T01:36:45.1318913Z             {
2026-06-21T01:36:45.1319139Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1319235Z               "line": 98
2026-06-21T01:36:45.1319340Z             },
2026-06-21T01:36:45.1319458Z             {
2026-06-21T01:36:45.1319607Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1319721Z               "line": 106
2026-06-21T01:36:45.1319826Z             },
2026-06-21T01:36:45.1319927Z             {
2026-06-21T01:36:45.1320059Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1320156Z               "line": 113
2026-06-21T01:36:45.1320260Z             },
2026-06-21T01:36:45.1320365Z             {
2026-06-21T01:36:45.1320504Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T01:36:45.1320613Z               "line": 122
2026-06-21T01:36:45.1320722Z             }
2026-06-21T01:36:45.1320824Z           ]
2026-06-21T01:36:45.1320937Z         }
2026-06-21T01:36:45.1321037Z       }
2026-06-21T01:36:45.1321138Z     },
2026-06-21T01:36:45.1321242Z     {
2026-06-21T01:36:45.1321385Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T01:36:45.1326690Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T01:36:45.1326858Z       "requiredStages": [
2026-06-21T01:36:45.1326963Z         "doc",
2026-06-21T01:36:45.1327075Z         "impl",
2026-06-21T01:36:45.1327190Z         "unit",
2026-06-21T01:36:45.1327282Z         "int"
2026-06-21T01:36:45.1327390Z       ],
2026-06-21T01:36:45.1327499Z       "stages": {
2026-06-21T01:36:45.1327606Z         "doc": {
2026-06-21T01:36:45.1327724Z           "complete": true,
2026-06-21T01:36:45.1327834Z           "evidence": [
2026-06-21T01:36:45.1328039Z             {
2026-06-21T01:36:45.1328221Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T01:36:45.1328325Z               "line": 277
2026-06-21T01:36:45.1328430Z             },
2026-06-21T01:36:45.1328536Z             {
2026-06-21T01:36:45.1328654Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.1328764Z               "line": 198
2026-06-21T01:36:45.1328865Z             }
2026-06-21T01:36:45.1329044Z           ]
2026-06-21T01:36:45.1329146Z         },
2026-06-21T01:36:45.1329245Z         "impl": {
2026-06-21T01:36:45.1329368Z           "complete": true,
2026-06-21T01:36:45.1329482Z           "evidence": [
2026-06-21T01:36:45.1329671Z             {
2026-06-21T01:36:45.1329824Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1329933Z               "line": 977
2026-06-21T01:36:45.1330042Z             },
2026-06-21T01:36:45.1330144Z             {
2026-06-21T01:36:45.1330309Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1330420Z               "line": 23
2026-06-21T01:36:45.1330525Z             },
2026-06-21T01:36:45.1330619Z             {
2026-06-21T01:36:45.1330778Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1330878Z               "line": 91
2026-06-21T01:36:45.1331006Z             },
2026-06-21T01:36:45.1331112Z             {
2026-06-21T01:36:45.1331278Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1331398Z               "line": 239
2026-06-21T01:36:45.1331506Z             },
2026-06-21T01:36:45.1331616Z             {
2026-06-21T01:36:45.1331774Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1331898Z               "line": 287
2026-06-21T01:36:45.1332004Z             },
2026-06-21T01:36:45.1332108Z             {
2026-06-21T01:36:45.1332254Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1332369Z               "line": 311
2026-06-21T01:36:45.1332476Z             },
2026-06-21T01:36:45.1332599Z             {
2026-06-21T01:36:45.1332758Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1332857Z               "line": 60
2026-06-21T01:36:45.1332967Z             },
2026-06-21T01:36:45.1333068Z             {
2026-06-21T01:36:45.1333215Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1333326Z               "line": 889
2026-06-21T01:36:45.1333430Z             }
2026-06-21T01:36:45.1333544Z           ]
2026-06-21T01:36:45.1333645Z         },
2026-06-21T01:36:45.1333749Z         "int": {
2026-06-21T01:36:45.1333863Z           "complete": true,
2026-06-21T01:36:45.1333975Z           "evidence": [
2026-06-21T01:36:45.1334078Z             {
2026-06-21T01:36:45.1334270Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.1334383Z               "line": 1034
2026-06-21T01:36:45.1334474Z             },
2026-06-21T01:36:45.1334585Z             {
2026-06-21T01:36:45.1334759Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.1334883Z               "line": 1139
2026-06-21T01:36:45.1334987Z             },
2026-06-21T01:36:45.1335095Z             {
2026-06-21T01:36:45.1335272Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.1335386Z               "line": 1207
2026-06-21T01:36:45.1335491Z             },
2026-06-21T01:36:45.1335592Z             {
2026-06-21T01:36:45.1335772Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T01:36:45.1335878Z               "line": 1300
2026-06-21T01:36:45.1335982Z             }
2026-06-21T01:36:45.1336096Z           ]
2026-06-21T01:36:45.1336193Z         },
2026-06-21T01:36:45.1336297Z         "unit": {
2026-06-21T01:36:45.1336406Z           "complete": true,
2026-06-21T01:36:45.1336527Z           "evidence": [
2026-06-21T01:36:45.1336631Z             {
2026-06-21T01:36:45.1336788Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.1337003Z               "line": 270
2026-06-21T01:36:45.1337108Z             },
2026-06-21T01:36:45.1337213Z             {
2026-06-21T01:36:45.1337370Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1337481Z               "line": 350
2026-06-21T01:36:45.1337589Z             },
2026-06-21T01:36:45.1337683Z             {
2026-06-21T01:36:45.1337842Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1337946Z               "line": 381
2026-06-21T01:36:45.1338050Z             },
2026-06-21T01:36:45.1338142Z             {
2026-06-21T01:36:45.1338298Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1338485Z               "line": 411
2026-06-21T01:36:45.1338590Z             },
2026-06-21T01:36:45.1338690Z             {
2026-06-21T01:36:45.1338847Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T01:36:45.1339033Z               "line": 440
2026-06-21T01:36:45.1339143Z             },
2026-06-21T01:36:45.1339248Z             {
2026-06-21T01:36:45.1339406Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1339519Z               "line": 1181
2026-06-21T01:36:45.1339619Z             }
2026-06-21T01:36:45.1339711Z           ]
2026-06-21T01:36:45.1339815Z         }
2026-06-21T01:36:45.1339919Z       }
2026-06-21T01:36:45.1340024Z     },
2026-06-21T01:36:45.1340128Z     {
2026-06-21T01:36:45.1340241Z       "id": "REQ-NET-1",
2026-06-21T01:36:45.1340452Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T01:36:45.1340569Z       "requiredStages": [
2026-06-21T01:36:45.1340670Z         "impl",
2026-06-21T01:36:45.1340775Z         "unit",
2026-06-21T01:36:45.1340884Z         "int"
2026-06-21T01:36:45.1340985Z       ],
2026-06-21T01:36:45.1341089Z       "stages": {
2026-06-21T01:36:45.1341194Z         "doc": {
2026-06-21T01:36:45.1341305Z           "complete": false,
2026-06-21T01:36:45.1341423Z           "evidence": []
2026-06-21T01:36:45.1341523Z         },
2026-06-21T01:36:45.1341619Z         "impl": {
2026-06-21T01:36:45.1341742Z           "complete": true,
2026-06-21T01:36:45.1341852Z           "evidence": [
2026-06-21T01:36:45.1341958Z             {
2026-06-21T01:36:45.1342110Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1342230Z               "line": 54
2026-06-21T01:36:45.1342330Z             },
2026-06-21T01:36:45.1342429Z             {
2026-06-21T01:36:45.1342597Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1342705Z               "line": 594
2026-06-21T01:36:45.1342814Z             },
2026-06-21T01:36:45.1342919Z             {
2026-06-21T01:36:45.1343065Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T01:36:45.1343174Z               "line": 130
2026-06-21T01:36:45.1343271Z             },
2026-06-21T01:36:45.1343375Z             {
2026-06-21T01:36:45.1343528Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1343637Z               "line": 97
2026-06-21T01:36:45.1343741Z             },
2026-06-21T01:36:45.1343847Z             {
2026-06-21T01:36:45.1344000Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1344104Z               "line": 159
2026-06-21T01:36:45.1344215Z             },
2026-06-21T01:36:45.1344314Z             {
2026-06-21T01:36:45.1344472Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1344572Z               "line": 175
2026-06-21T01:36:45.1344676Z             },
2026-06-21T01:36:45.1344772Z             {
2026-06-21T01:36:45.1344910Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1345039Z               "line": 190
2026-06-21T01:36:45.1345140Z             },
2026-06-21T01:36:45.1345244Z             {
2026-06-21T01:36:45.1345395Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1345510Z               "line": 271
2026-06-21T01:36:45.1345712Z             },
2026-06-21T01:36:45.1345813Z             {
2026-06-21T01:36:45.1345970Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1346080Z               "line": 306
2026-06-21T01:36:45.1346190Z             },
2026-06-21T01:36:45.1346294Z             {
2026-06-21T01:36:45.1346443Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1346543Z               "line": 312
2026-06-21T01:36:45.1346647Z             },
2026-06-21T01:36:45.1346748Z             {
2026-06-21T01:36:45.1346895Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1346990Z               "line": 318
2026-06-21T01:36:45.1347210Z             },
2026-06-21T01:36:45.1347319Z             {
2026-06-21T01:36:45.1347472Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1347582Z               "line": 334
2026-06-21T01:36:45.1347688Z             },
2026-06-21T01:36:45.1347787Z             {
2026-06-21T01:36:45.1347935Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1348041Z               "line": 354
2026-06-21T01:36:45.1348149Z             },
2026-06-21T01:36:45.1348248Z             {
2026-06-21T01:36:45.1348392Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:36:45.1348520Z               "line": 35
2026-06-21T01:36:45.1348625Z             },
2026-06-21T01:36:45.1348731Z             {
2026-06-21T01:36:45.1348877Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:36:45.1349074Z               "line": 85
2026-06-21T01:36:45.1349183Z             },
2026-06-21T01:36:45.1349283Z             {
2026-06-21T01:36:45.1349431Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.1349535Z               "line": 138
2026-06-21T01:36:45.1349642Z             },
2026-06-21T01:36:45.1349746Z             {
2026-06-21T01:36:45.1349874Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1349994Z               "line": 2953
2026-06-21T01:36:45.1350102Z             },
2026-06-21T01:36:45.1350208Z             {
2026-06-21T01:36:45.1350347Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.1350460Z               "line": 17
2026-06-21T01:36:45.1350565Z             }
2026-06-21T01:36:45.1350669Z           ]
2026-06-21T01:36:45.1350777Z         },
2026-06-21T01:36:45.1350882Z         "int": {
2026-06-21T01:36:45.1351007Z           "complete": true,
2026-06-21T01:36:45.1351110Z           "evidence": [
2026-06-21T01:36:45.1351221Z             {
2026-06-21T01:36:45.1351368Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1351482Z               "line": 341
2026-06-21T01:36:45.1351593Z             },
2026-06-21T01:36:45.1351693Z             {
2026-06-21T01:36:45.1351841Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1351950Z               "line": 675
2026-06-21T01:36:45.1352055Z             },
2026-06-21T01:36:45.1352150Z             {
2026-06-21T01:36:45.1352307Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1352422Z               "line": 973
2026-06-21T01:36:45.1352523Z             }
2026-06-21T01:36:45.1352641Z           ]
2026-06-21T01:36:45.1352741Z         },
2026-06-21T01:36:45.1352852Z         "unit": {
2026-06-21T01:36:45.1352960Z           "complete": true,
2026-06-21T01:36:45.1353081Z           "evidence": [
2026-06-21T01:36:45.1353186Z             {
2026-06-21T01:36:45.1353336Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1353446Z               "line": 651
2026-06-21T01:36:45.1353546Z             },
2026-06-21T01:36:45.1353649Z             {
2026-06-21T01:36:45.1353806Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1353907Z               "line": 686
2026-06-21T01:36:45.1354020Z             },
2026-06-21T01:36:45.1354122Z             {
2026-06-21T01:36:45.1354278Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1354388Z               "line": 940
2026-06-21T01:36:45.1354588Z             },
2026-06-21T01:36:45.1354693Z             {
2026-06-21T01:36:45.1354845Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T01:36:45.1354960Z               "line": 201
2026-06-21T01:36:45.1355056Z             },
2026-06-21T01:36:45.1355156Z             {
2026-06-21T01:36:45.1355304Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1355424Z               "line": 442
2026-06-21T01:36:45.1355527Z             },
2026-06-21T01:36:45.1355628Z             {
2026-06-21T01:36:45.1355790Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1355999Z               "line": 456
2026-06-21T01:36:45.1356098Z             },
2026-06-21T01:36:45.1356201Z             {
2026-06-21T01:36:45.1356349Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1356464Z               "line": 475
2026-06-21T01:36:45.1356568Z             },
2026-06-21T01:36:45.1356679Z             {
2026-06-21T01:36:45.1356835Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:36:45.1356950Z               "line": 120
2026-06-21T01:36:45.1357050Z             },
2026-06-21T01:36:45.1357155Z             {
2026-06-21T01:36:45.1357304Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T01:36:45.1357417Z               "line": 163
2026-06-21T01:36:45.1357517Z             },
2026-06-21T01:36:45.1357613Z             {
2026-06-21T01:36:45.1357766Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T01:36:45.1357879Z               "line": 530
2026-06-21T01:36:45.1357986Z             },
2026-06-21T01:36:45.1358089Z             {
2026-06-21T01:36:45.1358229Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.1358347Z               "line": 616
2026-06-21T01:36:45.1358452Z             },
2026-06-21T01:36:45.1358553Z             {
2026-06-21T01:36:45.1358695Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.1358803Z               "line": 1006
2026-06-21T01:36:45.1358909Z             }
2026-06-21T01:36:45.1359094Z           ]
2026-06-21T01:36:45.1359195Z         }
2026-06-21T01:36:45.1359291Z       }
2026-06-21T01:36:45.1359404Z     },
2026-06-21T01:36:45.1359505Z     {
2026-06-21T01:36:45.1359615Z       "id": "REQ-NET-2",
2026-06-21T01:36:45.1359829Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T01:36:45.1359948Z       "requiredStages": [
2026-06-21T01:36:45.1360053Z         "impl"
2026-06-21T01:36:45.1360153Z       ],
2026-06-21T01:36:45.1360254Z       "stages": {
2026-06-21T01:36:45.1360358Z         "doc": {
2026-06-21T01:36:45.1360478Z           "complete": false,
2026-06-21T01:36:45.1360597Z           "evidence": []
2026-06-21T01:36:45.1360701Z         },
2026-06-21T01:36:45.1360807Z         "impl": {
2026-06-21T01:36:45.1360917Z           "complete": true,
2026-06-21T01:36:45.1361029Z           "evidence": [
2026-06-21T01:36:45.1361134Z             {
2026-06-21T01:36:45.1361290Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:45.1361399Z               "line": 57
2026-06-21T01:36:45.1361504Z             },
2026-06-21T01:36:45.1361609Z             {
2026-06-21T01:36:45.1361761Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1361876Z               "line": 71
2026-06-21T01:36:45.1361981Z             },
2026-06-21T01:36:45.1362081Z             {
2026-06-21T01:36:45.1362234Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1362342Z               "line": 81
2026-06-21T01:36:45.1362449Z             },
2026-06-21T01:36:45.1362553Z             {
2026-06-21T01:36:45.1362730Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1362849Z               "line": 159
2026-06-21T01:36:45.1362953Z             },
2026-06-21T01:36:45.1363060Z             {
2026-06-21T01:36:45.1363220Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1363340Z               "line": 175
2026-06-21T01:36:45.1363544Z             },
2026-06-21T01:36:45.1363650Z             {
2026-06-21T01:36:45.1363807Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T01:36:45.1363916Z               "line": 190
2026-06-21T01:36:45.1364026Z             }
2026-06-21T01:36:45.1364124Z           ]
2026-06-21T01:36:45.1364232Z         },
2026-06-21T01:36:45.1364338Z         "int": {
2026-06-21T01:36:45.1364458Z           "complete": false,
2026-06-21T01:36:45.1364576Z           "evidence": []
2026-06-21T01:36:45.1364677Z         },
2026-06-21T01:36:45.1364782Z         "unit": {
2026-06-21T01:36:45.1364895Z           "complete": true,
2026-06-21T01:36:45.1365106Z           "evidence": [
2026-06-21T01:36:45.1365205Z             {
2026-06-21T01:36:45.1365349Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:45.1365468Z               "line": 402
2026-06-21T01:36:45.1365573Z             }
2026-06-21T01:36:45.1365683Z           ]
2026-06-21T01:36:45.1365787Z         }
2026-06-21T01:36:45.1365892Z       }
2026-06-21T01:36:45.1365993Z     },
2026-06-21T01:36:45.1366101Z     {
2026-06-21T01:36:45.1366212Z       "id": "REQ-NET-3",
2026-06-21T01:36:45.1366425Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T01:36:45.1366549Z       "requiredStages": [
2026-06-21T01:36:45.1366649Z         "impl",
2026-06-21T01:36:45.1366756Z         "unit"
2026-06-21T01:36:45.1366866Z       ],
2026-06-21T01:36:45.1366976Z       "stages": {
2026-06-21T01:36:45.1367085Z         "doc": {
2026-06-21T01:36:45.1367200Z           "complete": false,
2026-06-21T01:36:45.1367319Z           "evidence": []
2026-06-21T01:36:45.1367424Z         },
2026-06-21T01:36:45.1367530Z         "impl": {
2026-06-21T01:36:45.1367648Z           "complete": true,
2026-06-21T01:36:45.1367762Z           "evidence": [
2026-06-21T01:36:45.1367873Z             {
2026-06-21T01:36:45.1368016Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.1368134Z               "line": 39
2026-06-21T01:36:45.1368231Z             },
2026-06-21T01:36:45.1368340Z             {
2026-06-21T01:36:45.1368479Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.1368592Z               "line": 182
2026-06-21T01:36:45.1368697Z             },
2026-06-21T01:36:45.1368789Z             {
2026-06-21T01:36:45.1368935Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T01:36:45.1369127Z               "line": 333
2026-06-21T01:36:45.1369227Z             },
2026-06-21T01:36:45.1369321Z             {
2026-06-21T01:36:45.1369469Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:36:45.1369574Z               "line": 36
2026-06-21T01:36:45.1369678Z             },
2026-06-21T01:36:45.1369784Z             {
2026-06-21T01:36:45.1369941Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1370060Z               "line": 158
2026-06-21T01:36:45.1370161Z             },
2026-06-21T01:36:45.1370265Z             {
2026-06-21T01:36:45.1370433Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1370537Z               "line": 238
2026-06-21T01:36:45.1370632Z             },
2026-06-21T01:36:45.1370733Z             {
2026-06-21T01:36:45.1370894Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1371004Z               "line": 259
2026-06-21T01:36:45.1371115Z             },
2026-06-21T01:36:45.1371223Z             {
2026-06-21T01:36:45.1371377Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1371499Z               "line": 317
2026-06-21T01:36:45.1371604Z             },
2026-06-21T01:36:45.1371709Z             {
2026-06-21T01:36:45.1371878Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1371992Z               "line": 336
2026-06-21T01:36:45.1372098Z             },
2026-06-21T01:36:45.1372203Z             {
2026-06-21T01:36:45.1372355Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1372569Z               "line": 374
2026-06-21T01:36:45.1372694Z             },
2026-06-21T01:36:45.1372817Z             {
2026-06-21T01:36:45.1372971Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1373090Z               "line": 419
2026-06-21T01:36:45.1373194Z             },
2026-06-21T01:36:45.1373305Z             {
2026-06-21T01:36:45.1373442Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1373561Z               "line": 432
2026-06-21T01:36:45.1373667Z             },
2026-06-21T01:36:45.1373771Z             {
2026-06-21T01:36:45.1373925Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.1374139Z               "line": 29
2026-06-21T01:36:45.1374249Z             },
2026-06-21T01:36:45.1374353Z             {
2026-06-21T01:36:45.1374509Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.1374628Z               "line": 72
2026-06-21T01:36:45.1374726Z             },
2026-06-21T01:36:45.1374835Z             {
2026-06-21T01:36:45.1374989Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.1375102Z               "line": 123
2026-06-21T01:36:45.1375203Z             }
2026-06-21T01:36:45.1375304Z           ]
2026-06-21T01:36:45.1375413Z         },
2026-06-21T01:36:45.1375518Z         "int": {
2026-06-21T01:36:45.1375642Z           "complete": false,
2026-06-21T01:36:45.1375746Z           "evidence": []
2026-06-21T01:36:45.1375852Z         },
2026-06-21T01:36:45.1375961Z         "unit": {
2026-06-21T01:36:45.1376089Z           "complete": true,
2026-06-21T01:36:45.1376205Z           "evidence": [
2026-06-21T01:36:45.1376314Z             {
2026-06-21T01:36:45.1376467Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:36:45.1376568Z               "line": 223
2026-06-21T01:36:45.1376671Z             },
2026-06-21T01:36:45.1376772Z             {
2026-06-21T01:36:45.1376925Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:36:45.1377047Z               "line": 351
2026-06-21T01:36:45.1377147Z             },
2026-06-21T01:36:45.1377251Z             {
2026-06-21T01:36:45.1377398Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T01:36:45.1377513Z               "line": 504
2026-06-21T01:36:45.1377618Z             },
2026-06-21T01:36:45.1377717Z             {
2026-06-21T01:36:45.1377865Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:36:45.1377970Z               "line": 93
2026-06-21T01:36:45.1378080Z             },
2026-06-21T01:36:45.1378185Z             {
2026-06-21T01:36:45.1378337Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T01:36:45.1378452Z               "line": 142
2026-06-21T01:36:45.1378551Z             },
2026-06-21T01:36:45.1378656Z             {
2026-06-21T01:36:45.1378815Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.1378924Z               "line": 315
2026-06-21T01:36:45.1379111Z             },
2026-06-21T01:36:45.1379214Z             {
2026-06-21T01:36:45.1379368Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.1379505Z               "line": 355
2026-06-21T01:36:45.1379605Z             },
2026-06-21T01:36:45.1379697Z             {
2026-06-21T01:36:45.1379852Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T01:36:45.1379966Z               "line": 494
2026-06-21T01:36:45.1380063Z             }
2026-06-21T01:36:45.1380163Z           ]
2026-06-21T01:36:45.1380262Z         }
2026-06-21T01:36:45.1380358Z       }
2026-06-21T01:36:45.1380454Z     },
2026-06-21T01:36:45.1380558Z     {
2026-06-21T01:36:45.1380674Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T01:36:45.1380978Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T01:36:45.1381097Z       "requiredStages": [
2026-06-21T01:36:45.1381216Z         "impl",
2026-06-21T01:36:45.1381327Z         "unit"
2026-06-21T01:36:45.1381435Z       ],
2026-06-21T01:36:45.1381540Z       "stages": {
2026-06-21T01:36:45.1381778Z         "doc": {
2026-06-21T01:36:45.1381903Z           "complete": false,
2026-06-21T01:36:45.1382004Z           "evidence": []
2026-06-21T01:36:45.1382117Z         },
2026-06-21T01:36:45.1382235Z         "impl": {
2026-06-21T01:36:45.1382349Z           "complete": true,
2026-06-21T01:36:45.1382472Z           "evidence": [
2026-06-21T01:36:45.1382581Z             {
2026-06-21T01:36:45.1382743Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1382853Z               "line": 60
2026-06-21T01:36:45.1382963Z             },
2026-06-21T01:36:45.1383063Z             {
2026-06-21T01:36:45.1383226Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1383449Z               "line": 68
2026-06-21T01:36:45.1383555Z             },
2026-06-21T01:36:45.1383659Z             {
2026-06-21T01:36:45.1383821Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1383936Z               "line": 86
2026-06-21T01:36:45.1384055Z             },
2026-06-21T01:36:45.1384160Z             {
2026-06-21T01:36:45.1384317Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1384426Z               "line": 120
2026-06-21T01:36:45.1384533Z             },
2026-06-21T01:36:45.1384646Z             {
2026-06-21T01:36:45.1384785Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1384890Z               "line": 127
2026-06-21T01:36:45.1384998Z             },
2026-06-21T01:36:45.1385107Z             {
2026-06-21T01:36:45.1385263Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1385391Z               "line": 143
2026-06-21T01:36:45.1385496Z             },
2026-06-21T01:36:45.1385597Z             {
2026-06-21T01:36:45.1385753Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:36:45.1385864Z               "line": 16
2026-06-21T01:36:45.1385973Z             }
2026-06-21T01:36:45.1386088Z           ]
2026-06-21T01:36:45.1386207Z         },
2026-06-21T01:36:45.1386325Z         "int": {
2026-06-21T01:36:45.1386450Z           "complete": false,
2026-06-21T01:36:45.1386564Z           "evidence": []
2026-06-21T01:36:45.1386674Z         },
2026-06-21T01:36:45.1386775Z         "unit": {
2026-06-21T01:36:45.1386902Z           "complete": true,
2026-06-21T01:36:45.1387013Z           "evidence": [
2026-06-21T01:36:45.1387137Z             {
2026-06-21T01:36:45.1387279Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1387391Z               "line": 199
2026-06-21T01:36:45.1387490Z             },
2026-06-21T01:36:45.1387607Z             {
2026-06-21T01:36:45.1387765Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1387877Z               "line": 218
2026-06-21T01:36:45.1387991Z             },
2026-06-21T01:36:45.1388092Z             {
2026-06-21T01:36:45.1388243Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1388364Z               "line": 234
2026-06-21T01:36:45.1388469Z             },
2026-06-21T01:36:45.1388577Z             {
2026-06-21T01:36:45.1388741Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T01:36:45.1388854Z               "line": 256
2026-06-21T01:36:45.1389046Z             },
2026-06-21T01:36:45.1389160Z             {
2026-06-21T01:36:45.1389313Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:36:45.1389446Z               "line": 124
2026-06-21T01:36:45.1389555Z             },
2026-06-21T01:36:45.1389652Z             {
2026-06-21T01:36:45.1389799Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:36:45.1389909Z               "line": 140
2026-06-21T01:36:45.1390028Z             },
2026-06-21T01:36:45.1390137Z             {
2026-06-21T01:36:45.1390300Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T01:36:45.1390404Z               "line": 155
2026-06-21T01:36:45.1393233Z             }
2026-06-21T01:36:45.1393341Z           ]
2026-06-21T01:36:45.1393442Z         }
2026-06-21T01:36:45.1393543Z       }
2026-06-21T01:36:45.1393801Z     },
2026-06-21T01:36:45.1393905Z     {
2026-06-21T01:36:45.1394028Z       "id": "REQ-NOTIF-1",
2026-06-21T01:36:45.1394468Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T01:36:45.1394595Z       "requiredStages": [
2026-06-21T01:36:45.1394711Z         "impl",
2026-06-21T01:36:45.1394825Z         "unit",
2026-06-21T01:36:45.1394925Z         "int"
2026-06-21T01:36:45.1395035Z       ],
2026-06-21T01:36:45.1395144Z       "stages": {
2026-06-21T01:36:45.1395259Z         "doc": {
2026-06-21T01:36:45.1395384Z           "complete": false,
2026-06-21T01:36:45.1395624Z           "evidence": []
2026-06-21T01:36:45.1395725Z         },
2026-06-21T01:36:45.1395828Z         "impl": {
2026-06-21T01:36:45.1395936Z           "complete": true,
2026-06-21T01:36:45.1396038Z           "evidence": [
2026-06-21T01:36:45.1396138Z             {
2026-06-21T01:36:45.1396314Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1396429Z               "line": 514
2026-06-21T01:36:45.1396542Z             },
2026-06-21T01:36:45.1396643Z             {
2026-06-21T01:36:45.1396805Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1396924Z               "line": 30
2026-06-21T01:36:45.1397025Z             },
2026-06-21T01:36:45.1397129Z             {
2026-06-21T01:36:45.1397287Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1397406Z               "line": 69
2026-06-21T01:36:45.1397515Z             },
2026-06-21T01:36:45.1397626Z             {
2026-06-21T01:36:45.1397773Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1397888Z               "line": 93
2026-06-21T01:36:45.1397993Z             },
2026-06-21T01:36:45.1398092Z             {
2026-06-21T01:36:45.1398239Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1398348Z               "line": 107
2026-06-21T01:36:45.1398451Z             },
2026-06-21T01:36:45.1398542Z             {
2026-06-21T01:36:45.1398686Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1398803Z               "line": 142
2026-06-21T01:36:45.1398905Z             },
2026-06-21T01:36:45.1399081Z             {
2026-06-21T01:36:45.1399225Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1399329Z               "line": 187
2026-06-21T01:36:45.1399443Z             },
2026-06-21T01:36:45.1399540Z             {
2026-06-21T01:36:45.1399676Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1399776Z               "line": 258
2026-06-21T01:36:45.1399883Z             },
2026-06-21T01:36:45.1399977Z             {
2026-06-21T01:36:45.1400120Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1400236Z               "line": 372
2026-06-21T01:36:45.1400334Z             },
2026-06-21T01:36:45.1400440Z             {
2026-06-21T01:36:45.1400579Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1400698Z               "line": 479
2026-06-21T01:36:45.1400794Z             },
2026-06-21T01:36:45.1400903Z             {
2026-06-21T01:36:45.1401063Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1401168Z               "line": 24
2026-06-21T01:36:45.1401274Z             },
2026-06-21T01:36:45.1401373Z             {
2026-06-21T01:36:45.1401522Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1401631Z               "line": 34
2026-06-21T01:36:45.1401740Z             },
2026-06-21T01:36:45.1401851Z             {
2026-06-21T01:36:45.1401983Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1402103Z               "line": 60
2026-06-21T01:36:45.1402189Z             },
2026-06-21T01:36:45.1402289Z             {
2026-06-21T01:36:45.1402432Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1402546Z               "line": 82
2026-06-21T01:36:45.1402762Z             },
2026-06-21T01:36:45.1402856Z             {
2026-06-21T01:36:45.1403009Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1403115Z               "line": 94
2026-06-21T01:36:45.1403218Z             },
2026-06-21T01:36:45.1403317Z             {
2026-06-21T01:36:45.1403470Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.1403578Z               "line": 96
2026-06-21T01:36:45.1403673Z             },
2026-06-21T01:36:45.1403769Z             {
2026-06-21T01:36:45.1403925Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T01:36:45.1404035Z               "line": 44
2026-06-21T01:36:45.1404230Z             },
2026-06-21T01:36:45.1404336Z             {
2026-06-21T01:36:45.1404484Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:36:45.1404583Z               "line": 20
2026-06-21T01:36:45.1404690Z             },
2026-06-21T01:36:45.1404779Z             {
2026-06-21T01:36:45.1404922Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:36:45.1405038Z               "line": 30
2026-06-21T01:36:45.1405133Z             },
2026-06-21T01:36:45.1405227Z             {
2026-06-21T01:36:45.1405367Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:36:45.1405480Z               "line": 50
2026-06-21T01:36:45.1405576Z             },
2026-06-21T01:36:45.1405677Z             {
2026-06-21T01:36:45.1405823Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1405929Z               "line": 28
2026-06-21T01:36:45.1406034Z             },
2026-06-21T01:36:45.1406133Z             {
2026-06-21T01:36:45.1406266Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1406379Z               "line": 126
2026-06-21T01:36:45.1406483Z             },
2026-06-21T01:36:45.1406588Z             {
2026-06-21T01:36:45.1406726Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1406840Z               "line": 161
2026-06-21T01:36:45.1406937Z             },
2026-06-21T01:36:45.1407036Z             {
2026-06-21T01:36:45.1407174Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1407289Z               "line": 202
2026-06-21T01:36:45.1407398Z             },
2026-06-21T01:36:45.1407494Z             {
2026-06-21T01:36:45.1407637Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1407742Z               "line": 213
2026-06-21T01:36:45.1407838Z             },
2026-06-21T01:36:45.1407938Z             {
2026-06-21T01:36:45.1408075Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1408182Z               "line": 238
2026-06-21T01:36:45.1408285Z             },
2026-06-21T01:36:45.1408390Z             {
2026-06-21T01:36:45.1408525Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1408633Z               "line": 261
2026-06-21T01:36:45.1408737Z             },
2026-06-21T01:36:45.1408833Z             {
2026-06-21T01:36:45.1409058Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1409169Z               "line": 86
2026-06-21T01:36:45.1409279Z             }
2026-06-21T01:36:45.1409387Z           ]
2026-06-21T01:36:45.1409494Z         },
2026-06-21T01:36:45.1409599Z         "int": {
2026-06-21T01:36:45.1409717Z           "complete": true,
2026-06-21T01:36:45.1409823Z           "evidence": [
2026-06-21T01:36:45.1409922Z             {
2026-06-21T01:36:45.1410075Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1410180Z               "line": 285
2026-06-21T01:36:45.1410280Z             },
2026-06-21T01:36:45.1410380Z             {
2026-06-21T01:36:45.1410533Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T01:36:45.1410647Z               "line": 145
2026-06-21T01:36:45.1410739Z             },
2026-06-21T01:36:45.1410847Z             {
2026-06-21T01:36:45.1411000Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1411106Z               "line": 684
2026-06-21T01:36:45.1411320Z             },
2026-06-21T01:36:45.1411425Z             {
2026-06-21T01:36:45.1411576Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1411690Z               "line": 1102
2026-06-21T01:36:45.1411796Z             }
2026-06-21T01:36:45.1411895Z           ]
2026-06-21T01:36:45.1411995Z         },
2026-06-21T01:36:45.1412101Z         "unit": {
2026-06-21T01:36:45.1412219Z           "complete": true,
2026-06-21T01:36:45.1412330Z           "evidence": [
2026-06-21T01:36:45.1412430Z             {
2026-06-21T01:36:45.1412576Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1412678Z               "line": 572
2026-06-21T01:36:45.1412886Z             },
2026-06-21T01:36:45.1412988Z             {
2026-06-21T01:36:45.1413145Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1413259Z               "line": 636
2026-06-21T01:36:45.1413365Z             },
2026-06-21T01:36:45.1413463Z             {
2026-06-21T01:36:45.1413608Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1413718Z               "line": 740
2026-06-21T01:36:45.1413825Z             },
2026-06-21T01:36:45.1413921Z             {
2026-06-21T01:36:45.1414072Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1414176Z               "line": 772
2026-06-21T01:36:45.1414276Z             },
2026-06-21T01:36:45.1414378Z             {
2026-06-21T01:36:45.1414524Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1414630Z               "line": 840
2026-06-21T01:36:45.1414734Z             },
2026-06-21T01:36:45.1414838Z             {
2026-06-21T01:36:45.1414978Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1415086Z               "line": 898
2026-06-21T01:36:45.1415182Z             },
2026-06-21T01:36:45.1415288Z             {
2026-06-21T01:36:45.1415429Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1415531Z               "line": 1173
2026-06-21T01:36:45.1415645Z             },
2026-06-21T01:36:45.1415739Z             {
2026-06-21T01:36:45.1415898Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1416011Z               "line": 157
2026-06-21T01:36:45.1416117Z             },
2026-06-21T01:36:45.1416223Z             {
2026-06-21T01:36:45.1416369Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1416485Z               "line": 250
2026-06-21T01:36:45.1416589Z             },
2026-06-21T01:36:45.1416693Z             {
2026-06-21T01:36:45.1416835Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T01:36:45.1416939Z               "line": 273
2026-06-21T01:36:45.1417048Z             },
2026-06-21T01:36:45.1417148Z             {
2026-06-21T01:36:45.1417296Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.1417405Z               "line": 355
2026-06-21T01:36:45.1417516Z             },
2026-06-21T01:36:45.1417611Z             {
2026-06-21T01:36:45.1417764Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T01:36:45.1417868Z               "line": 392
2026-06-21T01:36:45.1417972Z             },
2026-06-21T01:36:45.1418073Z             {
2026-06-21T01:36:45.1418230Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T01:36:45.1418340Z               "line": 131
2026-06-21T01:36:45.1418441Z             },
2026-06-21T01:36:45.1418550Z             {
2026-06-21T01:36:45.1418703Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:36:45.1418813Z               "line": 72
2026-06-21T01:36:45.1418917Z             },
2026-06-21T01:36:45.1419095Z             {
2026-06-21T01:36:45.1419245Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T01:36:45.1419355Z               "line": 97
2026-06-21T01:36:45.1419459Z             },
2026-06-21T01:36:45.1419567Z             {
2026-06-21T01:36:45.1419710Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1419820Z               "line": 379
2026-06-21T01:36:45.1420059Z             },
2026-06-21T01:36:45.1420159Z             {
2026-06-21T01:36:45.1420306Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1420425Z               "line": 417
2026-06-21T01:36:45.1420530Z             },
2026-06-21T01:36:45.1420635Z             {
2026-06-21T01:36:45.1420778Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1420883Z               "line": 433
2026-06-21T01:36:45.1420979Z             },
2026-06-21T01:36:45.1421083Z             {
2026-06-21T01:36:45.1421217Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1421328Z               "line": 472
2026-06-21T01:36:45.1421532Z             },
2026-06-21T01:36:45.1421633Z             {
2026-06-21T01:36:45.1421769Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1421880Z               "line": 489
2026-06-21T01:36:45.1421976Z             },
2026-06-21T01:36:45.1422079Z             {
2026-06-21T01:36:45.1422226Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1422332Z               "line": 517
2026-06-21T01:36:45.1422427Z             },
2026-06-21T01:36:45.1422522Z             {
2026-06-21T01:36:45.1422661Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T01:36:45.1422775Z               "line": 548
2026-06-21T01:36:45.1422870Z             },
2026-06-21T01:36:45.1422971Z             {
2026-06-21T01:36:45.1423113Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1423229Z               "line": 745
2026-06-21T01:36:45.1423329Z             }
2026-06-21T01:36:45.1423438Z           ]
2026-06-21T01:36:45.1423544Z         }
2026-06-21T01:36:45.1423643Z       }
2026-06-21T01:36:45.1423743Z     },
2026-06-21T01:36:45.1423839Z     {
2026-06-21T01:36:45.1423958Z       "id": "REQ-NOTIF-2",
2026-06-21T01:36:45.1424263Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T01:36:45.1424385Z       "requiredStages": [
2026-06-21T01:36:45.1424490Z         "doc",
2026-06-21T01:36:45.1424595Z         "impl",
2026-06-21T01:36:45.1424702Z         "unit",
2026-06-21T01:36:45.1424798Z         "int"
2026-06-21T01:36:45.1424894Z       ],
2026-06-21T01:36:45.1424994Z       "stages": {
2026-06-21T01:36:45.1425103Z         "doc": {
2026-06-21T01:36:45.1425228Z           "complete": true,
2026-06-21T01:36:45.1425332Z           "evidence": [
2026-06-21T01:36:45.1425442Z             {
2026-06-21T01:36:45.1425557Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1425670Z               "line": 509
2026-06-21T01:36:45.1425772Z             },
2026-06-21T01:36:45.1425876Z             {
2026-06-21T01:36:45.1425999Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.1426096Z               "line": 123
2026-06-21T01:36:45.1426205Z             }
2026-06-21T01:36:45.1426295Z           ]
2026-06-21T01:36:45.1426396Z         },
2026-06-21T01:36:45.1426501Z         "impl": {
2026-06-21T01:36:45.1426620Z           "complete": true,
2026-06-21T01:36:45.1426740Z           "evidence": [
2026-06-21T01:36:45.1426844Z             {
2026-06-21T01:36:45.1426987Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1427098Z               "line": 287
2026-06-21T01:36:45.1427201Z             },
2026-06-21T01:36:45.1427300Z             {
2026-06-21T01:36:45.1427448Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1427565Z               "line": 301
2026-06-21T01:36:45.1427660Z             },
2026-06-21T01:36:45.1427766Z             {
2026-06-21T01:36:45.1427903Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1428009Z               "line": 326
2026-06-21T01:36:45.1428109Z             },
2026-06-21T01:36:45.1428213Z             {
2026-06-21T01:36:45.1428367Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1428467Z               "line": 239
2026-06-21T01:36:45.1428571Z             },
2026-06-21T01:36:45.1428762Z             {
2026-06-21T01:36:45.1428910Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1429100Z               "line": 95
2026-06-21T01:36:45.1429205Z             },
2026-06-21T01:36:45.1429311Z             {
2026-06-21T01:36:45.1429448Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1429563Z               "line": 2225
2026-06-21T01:36:45.1429665Z             },
2026-06-21T01:36:45.1429767Z             {
2026-06-21T01:36:45.1429885Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1429986Z               "line": 2274
2026-06-21T01:36:45.1430089Z             },
2026-06-21T01:36:45.1430188Z             {
2026-06-21T01:36:45.1430427Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1430532Z               "line": 2353
2026-06-21T01:36:45.1430647Z             },
2026-06-21T01:36:45.1430737Z             {
2026-06-21T01:36:45.1430866Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1430976Z               "line": 2392
2026-06-21T01:36:45.1431071Z             }
2026-06-21T01:36:45.1431171Z           ]
2026-06-21T01:36:45.1431268Z         },
2026-06-21T01:36:45.1431372Z         "int": {
2026-06-21T01:36:45.1431505Z           "complete": true,
2026-06-21T01:36:45.1431634Z           "evidence": [
2026-06-21T01:36:45.1431743Z             {
2026-06-21T01:36:45.1431888Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1432010Z               "line": 810
2026-06-21T01:36:45.1432111Z             },
2026-06-21T01:36:45.1432212Z             {
2026-06-21T01:36:45.1432368Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1432483Z               "line": 1345
2026-06-21T01:36:45.1432578Z             }
2026-06-21T01:36:45.1432668Z           ]
2026-06-21T01:36:45.1432767Z         },
2026-06-21T01:36:45.1432868Z         "unit": {
2026-06-21T01:36:45.1432982Z           "complete": true,
2026-06-21T01:36:45.1433096Z           "evidence": [
2026-06-21T01:36:45.1433183Z             {
2026-06-21T01:36:45.1433330Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1433435Z               "line": 1022
2026-06-21T01:36:45.1433545Z             },
2026-06-21T01:36:45.1433635Z             {
2026-06-21T01:36:45.1433774Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1433893Z               "line": 1090
2026-06-21T01:36:45.1433988Z             },
2026-06-21T01:36:45.1434089Z             {
2026-06-21T01:36:45.1434217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1434336Z               "line": 8210
2026-06-21T01:36:45.1434438Z             },
2026-06-21T01:36:45.1434541Z             {
2026-06-21T01:36:45.1434675Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1434786Z               "line": 8265
2026-06-21T01:36:45.1434889Z             }
2026-06-21T01:36:45.1434989Z           ]
2026-06-21T01:36:45.1435084Z         }
2026-06-21T01:36:45.1435187Z       }
2026-06-21T01:36:45.1435286Z     },
2026-06-21T01:36:45.1435382Z     {
2026-06-21T01:36:45.1435498Z       "id": "REQ-PAIR-1",
2026-06-21T01:36:45.1435634Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T01:36:45.1435750Z       "requiredStages": [
2026-06-21T01:36:45.1435854Z         "impl",
2026-06-21T01:36:45.1435954Z         "unit",
2026-06-21T01:36:45.1436060Z         "int"
2026-06-21T01:36:45.1436164Z       ],
2026-06-21T01:36:45.1436268Z       "stages": {
2026-06-21T01:36:45.1436374Z         "doc": {
2026-06-21T01:36:45.1436489Z           "complete": false,
2026-06-21T01:36:45.1436603Z           "evidence": []
2026-06-21T01:36:45.1436703Z         },
2026-06-21T01:36:45.1436808Z         "impl": {
2026-06-21T01:36:45.1436932Z           "complete": true,
2026-06-21T01:36:45.1437042Z           "evidence": [
2026-06-21T01:36:45.1437146Z             {
2026-06-21T01:36:45.1437305Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1437423Z               "line": 27
2026-06-21T01:36:45.1437523Z             },
2026-06-21T01:36:45.1437733Z             {
2026-06-21T01:36:45.1437898Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1438008Z               "line": 88
2026-06-21T01:36:45.1438116Z             },
2026-06-21T01:36:45.1438215Z             {
2026-06-21T01:36:45.1438374Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1438477Z               "line": 110
2026-06-21T01:36:45.1438583Z             },
2026-06-21T01:36:45.1438688Z             {
2026-06-21T01:36:45.1438835Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1439032Z               "line": 153
2026-06-21T01:36:45.1439227Z             },
2026-06-21T01:36:45.1439332Z             {
2026-06-21T01:36:45.1439513Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1439609Z               "line": 182
2026-06-21T01:36:45.1439718Z             },
2026-06-21T01:36:45.1439813Z             {
2026-06-21T01:36:45.1439975Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1440085Z               "line": 29
2026-06-21T01:36:45.1440186Z             },
2026-06-21T01:36:45.1440281Z             {
2026-06-21T01:36:45.1440455Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T01:36:45.1440566Z               "line": 31
2026-06-21T01:36:45.1440659Z             },
2026-06-21T01:36:45.1440753Z             {
2026-06-21T01:36:45.1440912Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1441011Z               "line": 44
2026-06-21T01:36:45.1441111Z             },
2026-06-21T01:36:45.1441207Z             {
2026-06-21T01:36:45.1441359Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1441470Z               "line": 171
2026-06-21T01:36:45.1441579Z             },
2026-06-21T01:36:45.1441678Z             {
2026-06-21T01:36:45.1441833Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1441942Z               "line": 376
2026-06-21T01:36:45.1442046Z             }
2026-06-21T01:36:45.1442148Z           ]
2026-06-21T01:36:45.1442247Z         },
2026-06-21T01:36:45.1442351Z         "int": {
2026-06-21T01:36:45.1442467Z           "complete": true,
2026-06-21T01:36:45.1442580Z           "evidence": [
2026-06-21T01:36:45.1442680Z             {
2026-06-21T01:36:45.1442833Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1442966Z               "line": 645
2026-06-21T01:36:45.1443063Z             },
2026-06-21T01:36:45.1443171Z             {
2026-06-21T01:36:45.1443313Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1443424Z               "line": 887
2026-06-21T01:36:45.1443528Z             }
2026-06-21T01:36:45.1443627Z           ]
2026-06-21T01:36:45.1443724Z         },
2026-06-21T01:36:45.1443824Z         "unit": {
2026-06-21T01:36:45.1443938Z           "complete": true,
2026-06-21T01:36:45.1444044Z           "evidence": [
2026-06-21T01:36:45.1444149Z             {
2026-06-21T01:36:45.1444315Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1444420Z               "line": 236
2026-06-21T01:36:45.1444529Z             },
2026-06-21T01:36:45.1444635Z             {
2026-06-21T01:36:45.1444792Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T01:36:45.1444897Z               "line": 349
2026-06-21T01:36:45.1445003Z             },
2026-06-21T01:36:45.1445092Z             {
2026-06-21T01:36:45.1445254Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1445364Z               "line": 194
2026-06-21T01:36:45.1445449Z             },
2026-06-21T01:36:45.1445558Z             {
2026-06-21T01:36:45.1445710Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1445828Z               "line": 216
2026-06-21T01:36:45.1445933Z             },
2026-06-21T01:36:45.1446029Z             {
2026-06-21T01:36:45.1446180Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1446395Z               "line": 230
2026-06-21T01:36:45.1446504Z             },
2026-06-21T01:36:45.1446606Z             {
2026-06-21T01:36:45.1446762Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1446872Z               "line": 242
2026-06-21T01:36:45.1446972Z             },
2026-06-21T01:36:45.1447077Z             {
2026-06-21T01:36:45.1447231Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1447339Z               "line": 256
2026-06-21T01:36:45.1447430Z             },
2026-06-21T01:36:45.1447541Z             {
2026-06-21T01:36:45.1447692Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1447893Z               "line": 270
2026-06-21T01:36:45.1447992Z             },
2026-06-21T01:36:45.1448088Z             {
2026-06-21T01:36:45.1448246Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1448359Z               "line": 277
2026-06-21T01:36:45.1448449Z             },
2026-06-21T01:36:45.1448554Z             {
2026-06-21T01:36:45.1448704Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T01:36:45.1448814Z               "line": 295
2026-06-21T01:36:45.1448919Z             },
2026-06-21T01:36:45.1449114Z             {
2026-06-21T01:36:45.1449268Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1449371Z               "line": 968
2026-06-21T01:36:45.1449477Z             },
2026-06-21T01:36:45.1449568Z             {
2026-06-21T01:36:45.1449725Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1449835Z               "line": 1051
2026-06-21T01:36:45.1449940Z             },
2026-06-21T01:36:45.1450035Z             {
2026-06-21T01:36:45.1450183Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1450288Z               "line": 1121
2026-06-21T01:36:45.1450383Z             },
2026-06-21T01:36:45.1450489Z             {
2026-06-21T01:36:45.1450640Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1450747Z               "line": 1182
2026-06-21T01:36:45.1450841Z             },
2026-06-21T01:36:45.1450944Z             {
2026-06-21T01:36:45.1451097Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1451200Z               "line": 1238
2026-06-21T01:36:45.1451304Z             },
2026-06-21T01:36:45.1451405Z             {
2026-06-21T01:36:45.1451562Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1451676Z               "line": 1457
2026-06-21T01:36:45.1451782Z             }
2026-06-21T01:36:45.1451886Z           ]
2026-06-21T01:36:45.1451981Z         }
2026-06-21T01:36:45.1452087Z       }
2026-06-21T01:36:45.1452187Z     },
2026-06-21T01:36:45.1452291Z     {
2026-06-21T01:36:45.1452411Z       "id": "REQ-PAIR-2",
2026-06-21T01:36:45.1452577Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T01:36:45.1452703Z       "requiredStages": [],
2026-06-21T01:36:45.1452802Z       "stages": {
2026-06-21T01:36:45.1452912Z         "doc": {
2026-06-21T01:36:45.1453027Z           "complete": false,
2026-06-21T01:36:45.1453140Z           "evidence": []
2026-06-21T01:36:45.1453250Z         },
2026-06-21T01:36:45.1453347Z         "impl": {
2026-06-21T01:36:45.1453469Z           "complete": false,
2026-06-21T01:36:45.1453575Z           "evidence": []
2026-06-21T01:36:45.1453676Z         },
2026-06-21T01:36:45.1453783Z         "int": {
2026-06-21T01:36:45.1453902Z           "complete": false,
2026-06-21T01:36:45.1454008Z           "evidence": []
2026-06-21T01:36:45.1454107Z         },
2026-06-21T01:36:45.1454216Z         "unit": {
2026-06-21T01:36:45.1454327Z           "complete": false,
2026-06-21T01:36:45.1454440Z           "evidence": []
2026-06-21T01:36:45.1454541Z         }
2026-06-21T01:36:45.1454642Z       }
2026-06-21T01:36:45.1454737Z     },
2026-06-21T01:36:45.1454836Z     {
2026-06-21T01:36:45.1454961Z       "id": "REQ-PAIR-3",
2026-06-21T01:36:45.1455234Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T01:36:45.1455356Z       "requiredStages": [
2026-06-21T01:36:45.1455452Z         "impl",
2026-06-21T01:36:45.1455558Z         "unit"
2026-06-21T01:36:45.1455661Z       ],
2026-06-21T01:36:45.1455762Z       "stages": {
2026-06-21T01:36:45.1455863Z         "doc": {
2026-06-21T01:36:45.1455971Z           "complete": false,
2026-06-21T01:36:45.1456085Z           "evidence": []
2026-06-21T01:36:45.1456185Z         },
2026-06-21T01:36:45.1456293Z         "impl": {
2026-06-21T01:36:45.1456416Z           "complete": true,
2026-06-21T01:36:45.1456522Z           "evidence": [
2026-06-21T01:36:45.1456722Z             {
2026-06-21T01:36:45.1456861Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1456974Z               "line": 3259
2026-06-21T01:36:45.1457074Z             },
2026-06-21T01:36:45.1457185Z             {
2026-06-21T01:36:45.1457317Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1457433Z               "line": 3328
2026-06-21T01:36:45.1457537Z             },
2026-06-21T01:36:45.1457627Z             {
2026-06-21T01:36:45.1457761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1457875Z               "line": 3709
2026-06-21T01:36:45.1457980Z             },
2026-06-21T01:36:45.1458081Z             {
2026-06-21T01:36:45.1458214Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1458329Z               "line": 4961
2026-06-21T01:36:45.1458420Z             }
2026-06-21T01:36:45.1458529Z           ]
2026-06-21T01:36:45.1458629Z         },
2026-06-21T01:36:45.1458730Z         "int": {
2026-06-21T01:36:45.1458848Z           "complete": false,
2026-06-21T01:36:45.1459014Z           "evidence": []
2026-06-21T01:36:45.1459119Z         },
2026-06-21T01:36:45.1459212Z         "unit": {
2026-06-21T01:36:45.1459331Z           "complete": true,
2026-06-21T01:36:45.1459461Z           "evidence": [
2026-06-21T01:36:45.1459556Z             {
2026-06-21T01:36:45.1459694Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1459804Z               "line": 9964
2026-06-21T01:36:45.1459913Z             },
2026-06-21T01:36:45.1460004Z             {
2026-06-21T01:36:45.1460137Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1460251Z               "line": 10179
2026-06-21T01:36:45.1460358Z             },
2026-06-21T01:36:45.1460457Z             {
2026-06-21T01:36:45.1460585Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1460701Z               "line": 10838
2026-06-21T01:36:45.1460804Z             },
2026-06-21T01:36:45.1460909Z             {
2026-06-21T01:36:45.1461034Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1461143Z               "line": 10857
2026-06-21T01:36:45.1461249Z             },
2026-06-21T01:36:45.1461349Z             {
2026-06-21T01:36:45.1461481Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1461590Z               "line": 10881
2026-06-21T01:36:45.1461695Z             },
2026-06-21T01:36:45.1461793Z             {
2026-06-21T01:36:45.1461922Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1462037Z               "line": 10900
2026-06-21T01:36:45.1462136Z             },
2026-06-21T01:36:45.1462241Z             {
2026-06-21T01:36:45.1462370Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1462484Z               "line": 10913
2026-06-21T01:36:45.1462590Z             },
2026-06-21T01:36:45.1462694Z             {
2026-06-21T01:36:45.1462822Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1462933Z               "line": 10922
2026-06-21T01:36:45.1463047Z             }
2026-06-21T01:36:45.1463147Z           ]
2026-06-21T01:36:45.1463248Z         }
2026-06-21T01:36:45.1463347Z       }
2026-06-21T01:36:45.1463442Z     },
2026-06-21T01:36:45.1463549Z     {
2026-06-21T01:36:45.1463667Z       "id": "REQ-PAIR-4",
2026-06-21T01:36:45.1463806Z       "title": "Subnet naming on first pairing",
2026-06-21T01:36:45.1464024Z       "requiredStages": [
2026-06-21T01:36:45.1464130Z         "impl",
2026-06-21T01:36:45.1464231Z         "unit"
2026-06-21T01:36:45.1464339Z       ],
2026-06-21T01:36:45.1464447Z       "stages": {
2026-06-21T01:36:45.1464534Z         "doc": {
2026-06-21T01:36:45.1464649Z           "complete": false,
2026-06-21T01:36:45.1464758Z           "evidence": []
2026-06-21T01:36:45.1464859Z         },
2026-06-21T01:36:45.1464959Z         "impl": {
2026-06-21T01:36:45.1465077Z           "complete": true,
2026-06-21T01:36:45.1465198Z           "evidence": [
2026-06-21T01:36:45.1465293Z             {
2026-06-21T01:36:45.1465440Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T01:36:45.1465645Z               "line": 174
2026-06-21T01:36:45.1465745Z             }
2026-06-21T01:36:45.1465851Z           ]
2026-06-21T01:36:45.1465955Z         },
2026-06-21T01:36:45.1466060Z         "int": {
2026-06-21T01:36:45.1466175Z           "complete": false,
2026-06-21T01:36:45.1466293Z           "evidence": []
2026-06-21T01:36:45.1466399Z         },
2026-06-21T01:36:45.1466509Z         "unit": {
2026-06-21T01:36:45.1466626Z           "complete": true,
2026-06-21T01:36:45.1466740Z           "evidence": [
2026-06-21T01:36:45.1466844Z             {
2026-06-21T01:36:45.1467000Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1467120Z               "line": 1294
2026-06-21T01:36:45.1467224Z             }
2026-06-21T01:36:45.1467314Z           ]
2026-06-21T01:36:45.1467416Z         }
2026-06-21T01:36:45.1467521Z       }
2026-06-21T01:36:45.1467625Z     },
2026-06-21T01:36:45.1467717Z     {
2026-06-21T01:36:45.1467826Z       "id": "REQ-PAIR-5",
2026-06-21T01:36:45.1468174Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T01:36:45.1468297Z       "requiredStages": [
2026-06-21T01:36:45.1468398Z         "impl",
2026-06-21T01:36:45.1468507Z         "unit",
2026-06-21T01:36:45.1468612Z         "int"
2026-06-21T01:36:45.1468718Z       ],
2026-06-21T01:36:45.1468831Z       "stages": {
2026-06-21T01:36:45.1468932Z         "doc": {
2026-06-21T01:36:45.1469136Z           "complete": false,
2026-06-21T01:36:45.1469237Z           "evidence": []
2026-06-21T01:36:45.1469348Z         },
2026-06-21T01:36:45.1469456Z         "impl": {
2026-06-21T01:36:45.1469569Z           "complete": true,
2026-06-21T01:36:45.1469674Z           "evidence": [
2026-06-21T01:36:45.1472683Z             {
2026-06-21T01:36:45.1472883Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1473002Z               "line": 44
2026-06-21T01:36:45.1473107Z             },
2026-06-21T01:36:45.1473217Z             {
2026-06-21T01:36:45.1473378Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1473493Z               "line": 96
2026-06-21T01:36:45.1473588Z             },
2026-06-21T01:36:45.1473693Z             {
2026-06-21T01:36:45.1473851Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1473970Z               "line": 107
2026-06-21T01:36:45.1474080Z             },
2026-06-21T01:36:45.1474180Z             {
2026-06-21T01:36:45.1474337Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1474448Z               "line": 124
2026-06-21T01:36:45.1474556Z             },
2026-06-21T01:36:45.1474651Z             {
2026-06-21T01:36:45.1474801Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1474913Z               "line": 155
2026-06-21T01:36:45.1475017Z             },
2026-06-21T01:36:45.1475119Z             {
2026-06-21T01:36:45.1475270Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1475381Z               "line": 195
2026-06-21T01:36:45.1475480Z             },
2026-06-21T01:36:45.1475589Z             {
2026-06-21T01:36:45.1475743Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1475853Z               "line": 251
2026-06-21T01:36:45.1476110Z             },
2026-06-21T01:36:45.1476210Z             {
2026-06-21T01:36:45.1476392Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1476506Z               "line": 33
2026-06-21T01:36:45.1476606Z             },
2026-06-21T01:36:45.1476712Z             {
2026-06-21T01:36:45.1476886Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1477007Z               "line": 45
2026-06-21T01:36:45.1477111Z             },
2026-06-21T01:36:45.1477215Z             {
2026-06-21T01:36:45.1477382Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1477589Z               "line": 59
2026-06-21T01:36:45.1477699Z             },
2026-06-21T01:36:45.1477804Z             {
2026-06-21T01:36:45.1477952Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1478057Z               "line": 376
2026-06-21T01:36:45.1478171Z             }
2026-06-21T01:36:45.1478282Z           ]
2026-06-21T01:36:45.1478386Z         },
2026-06-21T01:36:45.1478490Z         "int": {
2026-06-21T01:36:45.1478591Z           "complete": true,
2026-06-21T01:36:45.1478700Z           "evidence": [
2026-06-21T01:36:45.1478795Z             {
2026-06-21T01:36:45.1479058Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1479163Z               "line": 887
2026-06-21T01:36:45.1479259Z             },
2026-06-21T01:36:45.1479362Z             {
2026-06-21T01:36:45.1479512Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1479616Z               "line": 342
2026-06-21T01:36:45.1479721Z             }
2026-06-21T01:36:45.1479817Z           ]
2026-06-21T01:36:45.1479927Z         },
2026-06-21T01:36:45.1480025Z         "unit": {
2026-06-21T01:36:45.1480144Z           "complete": true,
2026-06-21T01:36:45.1480244Z           "evidence": [
2026-06-21T01:36:45.1480347Z             {
2026-06-21T01:36:45.1480499Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1480610Z               "line": 293
2026-06-21T01:36:45.1480714Z             },
2026-06-21T01:36:45.1480809Z             {
2026-06-21T01:36:45.1480957Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1481066Z               "line": 304
2026-06-21T01:36:45.1481173Z             },
2026-06-21T01:36:45.1481272Z             {
2026-06-21T01:36:45.1481425Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1481530Z               "line": 406
2026-06-21T01:36:45.1481629Z             },
2026-06-21T01:36:45.1481734Z             {
2026-06-21T01:36:45.1481911Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1482030Z               "line": 72
2026-06-21T01:36:45.1482127Z             },
2026-06-21T01:36:45.1482230Z             {
2026-06-21T01:36:45.1482393Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1482493Z               "line": 82
2026-06-21T01:36:45.1482592Z             },
2026-06-21T01:36:45.1482696Z             {
2026-06-21T01:36:45.1482871Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1482979Z               "line": 100
2026-06-21T01:36:45.1483076Z             },
2026-06-21T01:36:45.1483186Z             {
2026-06-21T01:36:45.1483352Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1483467Z               "line": 110
2026-06-21T01:36:45.1483566Z             },
2026-06-21T01:36:45.1483672Z             {
2026-06-21T01:36:45.1483848Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T01:36:45.1483957Z               "line": 125
2026-06-21T01:36:45.1484063Z             },
2026-06-21T01:36:45.1484167Z             {
2026-06-21T01:36:45.1484315Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1484425Z               "line": 1044
2026-06-21T01:36:45.1484530Z             },
2026-06-21T01:36:45.1484731Z             {
2026-06-21T01:36:45.1484883Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1484994Z               "line": 1110
2026-06-21T01:36:45.1485097Z             },
2026-06-21T01:36:45.1485202Z             {
2026-06-21T01:36:45.1485351Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.1485454Z               "line": 1357
2026-06-21T01:36:45.1485558Z             }
2026-06-21T01:36:45.1485664Z           ]
2026-06-21T01:36:45.1485764Z         }
2026-06-21T01:36:45.1485863Z       }
2026-06-21T01:36:45.1485964Z     },
2026-06-21T01:36:45.1486065Z     {
2026-06-21T01:36:45.1486183Z       "id": "REQ-PAIR-6",
2026-06-21T01:36:45.1486613Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T01:36:45.1486722Z       "requiredStages": [
2026-06-21T01:36:45.1486836Z         "impl",
2026-06-21T01:36:45.1486928Z         "unit"
2026-06-21T01:36:45.1487027Z       ],
2026-06-21T01:36:45.1487127Z       "stages": {
2026-06-21T01:36:45.1487229Z         "doc": {
2026-06-21T01:36:45.1487352Z           "complete": false,
2026-06-21T01:36:45.1487461Z           "evidence": []
2026-06-21T01:36:45.1487563Z         },
2026-06-21T01:36:45.1487661Z         "impl": {
2026-06-21T01:36:45.1487775Z           "complete": true,
2026-06-21T01:36:45.1487875Z           "evidence": [
2026-06-21T01:36:45.1487984Z             {
2026-06-21T01:36:45.1488120Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1488231Z               "line": 3328
2026-06-21T01:36:45.1488336Z             },
2026-06-21T01:36:45.1488435Z             {
2026-06-21T01:36:45.1488565Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1488683Z               "line": 3709
2026-06-21T01:36:45.1488788Z             },
2026-06-21T01:36:45.1488894Z             {
2026-06-21T01:36:45.1489123Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.1489232Z               "line": 18
2026-06-21T01:36:45.1489327Z             },
2026-06-21T01:36:45.1489432Z             {
2026-06-21T01:36:45.1489575Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.1489680Z               "line": 49
2026-06-21T01:36:45.1489786Z             },
2026-06-21T01:36:45.1489885Z             {
2026-06-21T01:36:45.1490013Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.1490120Z               "line": 318
2026-06-21T01:36:45.1490228Z             }
2026-06-21T01:36:45.1490333Z           ]
2026-06-21T01:36:45.1490430Z         },
2026-06-21T01:36:45.1490538Z         "int": {
2026-06-21T01:36:45.1490652Z           "complete": false,
2026-06-21T01:36:45.1490766Z           "evidence": []
2026-06-21T01:36:45.1490865Z         },
2026-06-21T01:36:45.1490973Z         "unit": {
2026-06-21T01:36:45.1491103Z           "complete": true,
2026-06-21T01:36:45.1491212Z           "evidence": [
2026-06-21T01:36:45.1491316Z             {
2026-06-21T01:36:45.1491437Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1491550Z               "line": 10935
2026-06-21T01:36:45.1491641Z             },
2026-06-21T01:36:45.1491747Z             {
2026-06-21T01:36:45.1491879Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1491985Z               "line": 10952
2026-06-21T01:36:45.1492090Z             },
2026-06-21T01:36:45.1492194Z             {
2026-06-21T01:36:45.1492333Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.1492437Z               "line": 383
2026-06-21T01:36:45.1492542Z             },
2026-06-21T01:36:45.1492648Z             {
2026-06-21T01:36:45.1492780Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T01:36:45.1492886Z               "line": 392
2026-06-21T01:36:45.1492977Z             }
2026-06-21T01:36:45.1493081Z           ]
2026-06-21T01:36:45.1493181Z         }
2026-06-21T01:36:45.1493280Z       }
2026-06-21T01:36:45.1493380Z     },
2026-06-21T01:36:45.1493474Z     {
2026-06-21T01:36:45.1493593Z       "id": "REQ-PAIR-7",
2026-06-21T01:36:45.1493883Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T01:36:45.1494008Z       "requiredStages": [],
2026-06-21T01:36:45.1494112Z       "stages": {
2026-06-21T01:36:45.1494222Z         "doc": {
2026-06-21T01:36:45.1494337Z           "complete": false,
2026-06-21T01:36:45.1494446Z           "evidence": []
2026-06-21T01:36:45.1494556Z         },
2026-06-21T01:36:45.1494651Z         "impl": {
2026-06-21T01:36:45.1494766Z           "complete": false,
2026-06-21T01:36:45.1494871Z           "evidence": []
2026-06-21T01:36:45.1494980Z         },
2026-06-21T01:36:45.1495090Z         "int": {
2026-06-21T01:36:45.1495200Z           "complete": false,
2026-06-21T01:36:45.1495405Z           "evidence": []
2026-06-21T01:36:45.1495506Z         },
2026-06-21T01:36:45.1495615Z         "unit": {
2026-06-21T01:36:45.1495729Z           "complete": false,
2026-06-21T01:36:45.1495839Z           "evidence": []
2026-06-21T01:36:45.1495939Z         }
2026-06-21T01:36:45.1496038Z       }
2026-06-21T01:36:45.1496143Z     },
2026-06-21T01:36:45.1496239Z     {
2026-06-21T01:36:45.1496358Z       "id": "REQ-PAIR-8",
2026-06-21T01:36:45.1497827Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T01:36:45.1497935Z       "requiredStages": [
2026-06-21T01:36:45.1498055Z         "impl",
2026-06-21T01:36:45.1498156Z         "unit"
2026-06-21T01:36:45.1498259Z       ],
2026-06-21T01:36:45.1498364Z       "stages": {
2026-06-21T01:36:45.1498473Z         "doc": {
2026-06-21T01:36:45.1498595Z           "complete": false,
2026-06-21T01:36:45.1498704Z           "evidence": []
2026-06-21T01:36:45.1498849Z         },
2026-06-21T01:36:45.1499038Z         "impl": {
2026-06-21T01:36:45.1499153Z           "complete": true,
2026-06-21T01:36:45.1499258Z           "evidence": [
2026-06-21T01:36:45.1499363Z             {
2026-06-21T01:36:45.1499521Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1499649Z               "line": 577
2026-06-21T01:36:45.1499755Z             },
2026-06-21T01:36:45.1499850Z             {
2026-06-21T01:36:45.1500007Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1500112Z               "line": 22
2026-06-21T01:36:45.1500240Z             },
2026-06-21T01:36:45.1500355Z             {
2026-06-21T01:36:45.1500527Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1500652Z               "line": 76
2026-06-21T01:36:45.1500774Z             },
2026-06-21T01:36:45.1500874Z             {
2026-06-21T01:36:45.1501023Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1501136Z               "line": 127
2026-06-21T01:36:45.1501249Z             }
2026-06-21T01:36:45.1501345Z           ]
2026-06-21T01:36:45.1501453Z         },
2026-06-21T01:36:45.1501553Z         "int": {
2026-06-21T01:36:45.1501658Z           "complete": false,
2026-06-21T01:36:45.1501754Z           "evidence": []
2026-06-21T01:36:45.1501862Z         },
2026-06-21T01:36:45.1501969Z         "unit": {
2026-06-21T01:36:45.1502074Z           "complete": true,
2026-06-21T01:36:45.1502177Z           "evidence": [
2026-06-21T01:36:45.1502269Z             {
2026-06-21T01:36:45.1502421Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1502530Z               "line": 183
2026-06-21T01:36:45.1502641Z             },
2026-06-21T01:36:45.1502750Z             {
2026-06-21T01:36:45.1502903Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1503026Z               "line": 195
2026-06-21T01:36:45.1503126Z             },
2026-06-21T01:36:45.1503232Z             {
2026-06-21T01:36:45.1503484Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1503600Z               "line": 211
2026-06-21T01:36:45.1503698Z             },
2026-06-21T01:36:45.1503792Z             {
2026-06-21T01:36:45.1503945Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T01:36:45.1504053Z               "line": 227
2026-06-21T01:36:45.1504158Z             }
2026-06-21T01:36:45.1504254Z           ]
2026-06-21T01:36:45.1504353Z         }
2026-06-21T01:36:45.1504448Z       }
2026-06-21T01:36:45.1504536Z     },
2026-06-21T01:36:45.1504635Z     {
2026-06-21T01:36:45.1504744Z       "id": "REQ-PICKER-1",
2026-06-21T01:36:45.1508635Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T01:36:45.1508796Z       "requiredStages": [
2026-06-21T01:36:45.1508900Z         "impl",
2026-06-21T01:36:45.1509076Z         "unit"
2026-06-21T01:36:45.1509184Z       ],
2026-06-21T01:36:45.1509294Z       "stages": {
2026-06-21T01:36:45.1509409Z         "doc": {
2026-06-21T01:36:45.1509517Z           "complete": false,
2026-06-21T01:36:45.1509628Z           "evidence": []
2026-06-21T01:36:45.1509732Z         },
2026-06-21T01:36:45.1509837Z         "impl": {
2026-06-21T01:36:45.1509948Z           "complete": true,
2026-06-21T01:36:45.1510057Z           "evidence": [
2026-06-21T01:36:45.1510165Z             {
2026-06-21T01:36:45.1510310Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1510419Z               "line": 248
2026-06-21T01:36:45.1510524Z             },
2026-06-21T01:36:45.1510629Z             {
2026-06-21T01:36:45.1510781Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1510882Z               "line": 263
2026-06-21T01:36:45.1510987Z             }
2026-06-21T01:36:45.1511072Z           ]
2026-06-21T01:36:45.1511182Z         },
2026-06-21T01:36:45.1511288Z         "int": {
2026-06-21T01:36:45.1511401Z           "complete": false,
2026-06-21T01:36:45.1511512Z           "evidence": []
2026-06-21T01:36:45.1511612Z         },
2026-06-21T01:36:45.1511724Z         "unit": {
2026-06-21T01:36:45.1511839Z           "complete": true,
2026-06-21T01:36:45.1511952Z           "evidence": [
2026-06-21T01:36:45.1512041Z             {
2026-06-21T01:36:45.1512185Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.1512305Z               "line": 476
2026-06-21T01:36:45.1512408Z             },
2026-06-21T01:36:45.1512509Z             {
2026-06-21T01:36:45.1512652Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1512756Z               "line": 753
2026-06-21T01:36:45.1512862Z             },
2026-06-21T01:36:45.1512967Z             {
2026-06-21T01:36:45.1513114Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1513215Z               "line": 886
2026-06-21T01:36:45.1513310Z             },
2026-06-21T01:36:45.1513405Z             {
2026-06-21T01:36:45.1513644Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1513759Z               "line": 455
2026-06-21T01:36:45.1513864Z             }
2026-06-21T01:36:45.1513968Z           ]
2026-06-21T01:36:45.1514069Z         }
2026-06-21T01:36:45.1514174Z       }
2026-06-21T01:36:45.1514272Z     },
2026-06-21T01:36:45.1514381Z     {
2026-06-21T01:36:45.1514501Z       "id": "REQ-PICKER-2",
2026-06-21T01:36:45.1516621Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T01:36:45.1516863Z       "requiredStages": [
2026-06-21T01:36:45.1516974Z         "impl",
2026-06-21T01:36:45.1517074Z         "unit"
2026-06-21T01:36:45.1517182Z       ],
2026-06-21T01:36:45.1517282Z       "stages": {
2026-06-21T01:36:45.1517383Z         "doc": {
2026-06-21T01:36:45.1517501Z           "complete": false,
2026-06-21T01:36:45.1517602Z           "evidence": []
2026-06-21T01:36:45.1517702Z         },
2026-06-21T01:36:45.1517806Z         "impl": {
2026-06-21T01:36:45.1517926Z           "complete": true,
2026-06-21T01:36:45.1518031Z           "evidence": [
2026-06-21T01:36:45.1518140Z             {
2026-06-21T01:36:45.1518299Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1518408Z               "line": 183
2026-06-21T01:36:45.1518512Z             },
2026-06-21T01:36:45.1518614Z             {
2026-06-21T01:36:45.1518756Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1518861Z               "line": 296
2026-06-21T01:36:45.1519036Z             }
2026-06-21T01:36:45.1519132Z           ]
2026-06-21T01:36:45.1519234Z         },
2026-06-21T01:36:45.1519337Z         "int": {
2026-06-21T01:36:45.1519446Z           "complete": false,
2026-06-21T01:36:45.1519551Z           "evidence": []
2026-06-21T01:36:45.1519659Z         },
2026-06-21T01:36:45.1519763Z         "unit": {
2026-06-21T01:36:45.1519878Z           "complete": true,
2026-06-21T01:36:45.1519983Z           "evidence": [
2026-06-21T01:36:45.1520087Z             {
2026-06-21T01:36:45.1520236Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1520345Z               "line": 655
2026-06-21T01:36:45.1520444Z             }
2026-06-21T01:36:45.1520555Z           ]
2026-06-21T01:36:45.1520655Z         }
2026-06-21T01:36:45.1520754Z       }
2026-06-21T01:36:45.1520856Z     },
2026-06-21T01:36:45.1520955Z     {
2026-06-21T01:36:45.1521079Z       "id": "REQ-PICKER-3",
2026-06-21T01:36:45.1523723Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T01:36:45.1523856Z       "requiredStages": [
2026-06-21T01:36:45.1523961Z         "impl",
2026-06-21T01:36:45.1524066Z         "unit"
2026-06-21T01:36:45.1524165Z       ],
2026-06-21T01:36:45.1524270Z       "stages": {
2026-06-21T01:36:45.1524499Z         "doc": {
2026-06-21T01:36:45.1524619Z           "complete": false,
2026-06-21T01:36:45.1524729Z           "evidence": []
2026-06-21T01:36:45.1524827Z         },
2026-06-21T01:36:45.1524936Z         "impl": {
2026-06-21T01:36:45.1525042Z           "complete": true,
2026-06-21T01:36:45.1525149Z           "evidence": [
2026-06-21T01:36:45.1525244Z             {
2026-06-21T01:36:45.1525383Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1525497Z               "line": 124
2026-06-21T01:36:45.1525597Z             }
2026-06-21T01:36:45.1525707Z           ]
2026-06-21T01:36:45.1525798Z         },
2026-06-21T01:36:45.1526008Z         "int": {
2026-06-21T01:36:45.1526131Z           "complete": false,
2026-06-21T01:36:45.1526266Z           "evidence": []
2026-06-21T01:36:45.1526370Z         },
2026-06-21T01:36:45.1526474Z         "unit": {
2026-06-21T01:36:45.1526585Z           "complete": true,
2026-06-21T01:36:45.1526694Z           "evidence": [
2026-06-21T01:36:45.1526784Z             {
2026-06-21T01:36:45.1526924Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1527032Z               "line": 369
2026-06-21T01:36:45.1527128Z             }
2026-06-21T01:36:45.1527229Z           ]
2026-06-21T01:36:45.1527324Z         }
2026-06-21T01:36:45.1527428Z       }
2026-06-21T01:36:45.1527535Z     },
2026-06-21T01:36:45.1527630Z     {
2026-06-21T01:36:45.1527742Z       "id": "REQ-PICKER-4",
2026-06-21T01:36:45.1529837Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T01:36:45.1529973Z       "requiredStages": [
2026-06-21T01:36:45.1530082Z         "impl",
2026-06-21T01:36:45.1530186Z         "unit"
2026-06-21T01:36:45.1530285Z       ],
2026-06-21T01:36:45.1530399Z       "stages": {
2026-06-21T01:36:45.1530500Z         "doc": {
2026-06-21T01:36:45.1530614Z           "complete": false,
2026-06-21T01:36:45.1530724Z           "evidence": []
2026-06-21T01:36:45.1530820Z         },
2026-06-21T01:36:45.1530924Z         "impl": {
2026-06-21T01:36:45.1531029Z           "complete": true,
2026-06-21T01:36:45.1531139Z           "evidence": [
2026-06-21T01:36:45.1531238Z             {
2026-06-21T01:36:45.1531383Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.1531497Z               "line": 353
2026-06-21T01:36:45.1531601Z             },
2026-06-21T01:36:45.1531712Z             {
2026-06-21T01:36:45.1531849Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1531953Z               "line": 105
2026-06-21T01:36:45.1532055Z             }
2026-06-21T01:36:45.1532159Z           ]
2026-06-21T01:36:45.1532264Z         },
2026-06-21T01:36:45.1532370Z         "int": {
2026-06-21T01:36:45.1532488Z           "complete": false,
2026-06-21T01:36:45.1532593Z           "evidence": []
2026-06-21T01:36:45.1532699Z         },
2026-06-21T01:36:45.1532807Z         "unit": {
2026-06-21T01:36:45.1532920Z           "complete": true,
2026-06-21T01:36:45.1533026Z           "evidence": [
2026-06-21T01:36:45.1533133Z             {
2026-06-21T01:36:45.1533276Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.1533382Z               "line": 1246
2026-06-21T01:36:45.1533491Z             },
2026-06-21T01:36:45.1533586Z             {
2026-06-21T01:36:45.1533730Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1533839Z               "line": 427
2026-06-21T01:36:45.1534040Z             }
2026-06-21T01:36:45.1534144Z           ]
2026-06-21T01:36:45.1534249Z         }
2026-06-21T01:36:45.1534345Z       }
2026-06-21T01:36:45.1534440Z     },
2026-06-21T01:36:45.1534545Z     {
2026-06-21T01:36:45.1534650Z       "id": "REQ-PICKER-5",
2026-06-21T01:36:45.1537833Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T01:36:45.1538076Z       "requiredStages": [
2026-06-21T01:36:45.1538185Z         "impl",
2026-06-21T01:36:45.1538288Z         "unit"
2026-06-21T01:36:45.1538388Z       ],
2026-06-21T01:36:45.1538493Z       "stages": {
2026-06-21T01:36:45.1538593Z         "doc": {
2026-06-21T01:36:45.1538702Z           "complete": false,
2026-06-21T01:36:45.1538813Z           "evidence": []
2026-06-21T01:36:45.1538917Z         },
2026-06-21T01:36:45.1539100Z         "impl": {
2026-06-21T01:36:45.1539209Z           "complete": true,
2026-06-21T01:36:45.1539327Z           "evidence": [
2026-06-21T01:36:45.1539429Z             {
2026-06-21T01:36:45.1539575Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1539691Z               "line": 1802
2026-06-21T01:36:45.1539786Z             }
2026-06-21T01:36:45.1539890Z           ]
2026-06-21T01:36:45.1539996Z         },
2026-06-21T01:36:45.1540101Z         "int": {
2026-06-21T01:36:45.1540214Z           "complete": false,
2026-06-21T01:36:45.1540315Z           "evidence": []
2026-06-21T01:36:45.1540411Z         },
2026-06-21T01:36:45.1540519Z         "unit": {
2026-06-21T01:36:45.1540628Z           "complete": true,
2026-06-21T01:36:45.1540728Z           "evidence": [
2026-06-21T01:36:45.1540831Z             {
2026-06-21T01:36:45.1540960Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1541070Z               "line": 7526
2026-06-21T01:36:45.1541179Z             }
2026-06-21T01:36:45.1541279Z           ]
2026-06-21T01:36:45.1541370Z         }
2026-06-21T01:36:45.1541474Z       }
2026-06-21T01:36:45.1541564Z     },
2026-06-21T01:36:45.1541662Z     {
2026-06-21T01:36:45.1541803Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T01:36:45.1543283Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T01:36:45.1543405Z       "requiredStages": [],
2026-06-21T01:36:45.1543505Z       "stages": {
2026-06-21T01:36:45.1543614Z         "doc": {
2026-06-21T01:36:45.1543741Z           "complete": false,
2026-06-21T01:36:45.1543846Z           "evidence": []
2026-06-21T01:36:45.1543956Z         },
2026-06-21T01:36:45.1544060Z         "impl": {
2026-06-21T01:36:45.1544175Z           "complete": false,
2026-06-21T01:36:45.1544280Z           "evidence": []
2026-06-21T01:36:45.1544384Z         },
2026-06-21T01:36:45.1544600Z         "int": {
2026-06-21T01:36:45.1544709Z           "complete": false,
2026-06-21T01:36:45.1544829Z           "evidence": []
2026-06-21T01:36:45.1544923Z         },
2026-06-21T01:36:45.1545028Z         "unit": {
2026-06-21T01:36:45.1545134Z           "complete": false,
2026-06-21T01:36:45.1545243Z           "evidence": []
2026-06-21T01:36:45.1545348Z         }
2026-06-21T01:36:45.1545444Z       }
2026-06-21T01:36:45.1545549Z     },
2026-06-21T01:36:45.1545648Z     {
2026-06-21T01:36:45.1545773Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T01:36:45.1546956Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T01:36:45.1547162Z       "requiredStages": [
2026-06-21T01:36:45.1547280Z         "impl",
2026-06-21T01:36:45.1547382Z         "unit"
2026-06-21T01:36:45.1547490Z       ],
2026-06-21T01:36:45.1547595Z       "stages": {
2026-06-21T01:36:45.1547706Z         "doc": {
2026-06-21T01:36:45.1547810Z           "complete": false,
2026-06-21T01:36:45.1547915Z           "evidence": []
2026-06-21T01:36:45.1548021Z         },
2026-06-21T01:36:45.1548124Z         "impl": {
2026-06-21T01:36:45.1548234Z           "complete": true,
2026-06-21T01:36:45.1548345Z           "evidence": [
2026-06-21T01:36:45.1548458Z             {
2026-06-21T01:36:45.1548602Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1548717Z               "line": 275
2026-06-21T01:36:45.1548825Z             }
2026-06-21T01:36:45.1548919Z           ]
2026-06-21T01:36:45.1549097Z         },
2026-06-21T01:36:45.1549200Z         "int": {
2026-06-21T01:36:45.1549311Z           "complete": false,
2026-06-21T01:36:45.1549426Z           "evidence": []
2026-06-21T01:36:45.1549529Z         },
2026-06-21T01:36:45.1549640Z         "unit": {
2026-06-21T01:36:45.1549745Z           "complete": true,
2026-06-21T01:36:45.1549849Z           "evidence": [
2026-06-21T01:36:45.1549950Z             {
2026-06-21T01:36:45.1550098Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1550212Z               "line": 400
2026-06-21T01:36:45.1550313Z             }
2026-06-21T01:36:45.1550417Z           ]
2026-06-21T01:36:45.1550512Z         }
2026-06-21T01:36:45.1550613Z       }
2026-06-21T01:36:45.1550717Z     },
2026-06-21T01:36:45.1550822Z     {
2026-06-21T01:36:45.1550952Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T01:36:45.1552597Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T01:36:45.1552726Z       "requiredStages": [
2026-06-21T01:36:45.1552822Z         "impl",
2026-06-21T01:36:45.1552931Z         "unit"
2026-06-21T01:36:45.1553031Z       ],
2026-06-21T01:36:45.1553132Z       "stages": {
2026-06-21T01:36:45.1553236Z         "doc": {
2026-06-21T01:36:45.1553346Z           "complete": false,
2026-06-21T01:36:45.1553452Z           "evidence": []
2026-06-21T01:36:45.1553551Z         },
2026-06-21T01:36:45.1553661Z         "impl": {
2026-06-21T01:36:45.1553776Z           "complete": true,
2026-06-21T01:36:45.1553885Z           "evidence": [
2026-06-21T01:36:45.1553994Z             {
2026-06-21T01:36:45.1554132Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1554235Z               "line": 654
2026-06-21T01:36:45.1554330Z             }
2026-06-21T01:36:45.1554531Z           ]
2026-06-21T01:36:45.1554639Z         },
2026-06-21T01:36:45.1554740Z         "int": {
2026-06-21T01:36:45.1554845Z           "complete": false,
2026-06-21T01:36:45.1554954Z           "evidence": []
2026-06-21T01:36:45.1555055Z         },
2026-06-21T01:36:45.1555160Z         "unit": {
2026-06-21T01:36:45.1555273Z           "complete": true,
2026-06-21T01:36:45.1555374Z           "evidence": [
2026-06-21T01:36:45.1555469Z             {
2026-06-21T01:36:45.1555617Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1555719Z               "line": 1078
2026-06-21T01:36:45.1555827Z             },
2026-06-21T01:36:45.1556019Z             {
2026-06-21T01:36:45.1556194Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1556295Z               "line": 1092
2026-06-21T01:36:45.1556400Z             }
2026-06-21T01:36:45.1556504Z           ]
2026-06-21T01:36:45.1556593Z         }
2026-06-21T01:36:45.1556699Z       }
2026-06-21T01:36:45.1556806Z     },
2026-06-21T01:36:45.1556910Z     {
2026-06-21T01:36:45.1557035Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T01:36:45.1558718Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T01:36:45.1558852Z       "requiredStages": [],
2026-06-21T01:36:45.1559051Z       "stages": {
2026-06-21T01:36:45.1559152Z         "doc": {
2026-06-21T01:36:45.1559272Z           "complete": false,
2026-06-21T01:36:45.1559380Z           "evidence": []
2026-06-21T01:36:45.1559479Z         },
2026-06-21T01:36:45.1559580Z         "impl": {
2026-06-21T01:36:45.1559704Z           "complete": false,
2026-06-21T01:36:45.1559804Z           "evidence": []
2026-06-21T01:36:45.1559905Z         },
2026-06-21T01:36:45.1560014Z         "int": {
2026-06-21T01:36:45.1560113Z           "complete": false,
2026-06-21T01:36:45.1560224Z           "evidence": []
2026-06-21T01:36:45.1560329Z         },
2026-06-21T01:36:45.1560438Z         "unit": {
2026-06-21T01:36:45.1560544Z           "complete": false,
2026-06-21T01:36:45.1560653Z           "evidence": []
2026-06-21T01:36:45.1560757Z         }
2026-06-21T01:36:45.1560854Z       }
2026-06-21T01:36:45.1560958Z     },
2026-06-21T01:36:45.1561058Z     {
2026-06-21T01:36:45.1561169Z       "id": "REQ-PRES-1",
2026-06-21T01:36:45.1562604Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T01:36:45.1562719Z       "requiredStages": [
2026-06-21T01:36:45.1562829Z         "impl",
2026-06-21T01:36:45.1562928Z         "unit",
2026-06-21T01:36:45.1563034Z         "int"
2026-06-21T01:36:45.1563144Z       ],
2026-06-21T01:36:45.1563243Z       "stages": {
2026-06-21T01:36:45.1563353Z         "doc": {
2026-06-21T01:36:45.1563463Z           "complete": true,
2026-06-21T01:36:45.1563577Z           "evidence": [
2026-06-21T01:36:45.1563678Z             {
2026-06-21T01:36:45.1563811Z               "path": "docs/DEFERRED.md",
2026-06-21T01:36:45.1563915Z               "line": 11
2026-06-21T01:36:45.1564017Z             }
2026-06-21T01:36:45.1564121Z           ]
2026-06-21T01:36:45.1564207Z         },
2026-06-21T01:36:45.1564317Z         "impl": {
2026-06-21T01:36:45.1564427Z           "complete": true,
2026-06-21T01:36:45.1564658Z           "evidence": [
2026-06-21T01:36:45.1564763Z             {
2026-06-21T01:36:45.1564899Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1565014Z               "line": 515
2026-06-21T01:36:45.1565110Z             },
2026-06-21T01:36:45.1565214Z             {
2026-06-21T01:36:45.1565358Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1565462Z               "line": 567
2026-06-21T01:36:45.1565571Z             },
2026-06-21T01:36:45.1565677Z             {
2026-06-21T01:36:45.1565824Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1566016Z               "line": 188
2026-06-21T01:36:45.1566120Z             },
2026-06-21T01:36:45.1566225Z             {
2026-06-21T01:36:45.1566363Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1566477Z               "line": 214
2026-06-21T01:36:45.1566579Z             },
2026-06-21T01:36:45.1566683Z             {
2026-06-21T01:36:45.1566826Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1566937Z               "line": 28
2026-06-21T01:36:45.1567030Z             },
2026-06-21T01:36:45.1567134Z             {
2026-06-21T01:36:45.1567282Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1567390Z               "line": 105
2026-06-21T01:36:45.1567499Z             },
2026-06-21T01:36:45.1567600Z             {
2026-06-21T01:36:45.1567752Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1567852Z               "line": 161
2026-06-21T01:36:45.1567967Z             },
2026-06-21T01:36:45.1568071Z             {
2026-06-21T01:36:45.1568206Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1568311Z               "line": 180
2026-06-21T01:36:45.1568410Z             },
2026-06-21T01:36:45.1568516Z             {
2026-06-21T01:36:45.1568668Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1568782Z               "line": 421
2026-06-21T01:36:45.1568892Z             },
2026-06-21T01:36:45.1569082Z             {
2026-06-21T01:36:45.1569235Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1569335Z               "line": 289
2026-06-21T01:36:45.1572573Z             },
2026-06-21T01:36:45.1572697Z             {
2026-06-21T01:36:45.1572864Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1572998Z               "line": 336
2026-06-21T01:36:45.1573103Z             },
2026-06-21T01:36:45.1573207Z             {
2026-06-21T01:36:45.1573361Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1573489Z               "line": 362
2026-06-21T01:36:45.1573589Z             },
2026-06-21T01:36:45.1573690Z             {
2026-06-21T01:36:45.1573836Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.1573943Z               "line": 100
2026-06-21T01:36:45.1574047Z             }
2026-06-21T01:36:45.1574151Z           ]
2026-06-21T01:36:45.1574253Z         },
2026-06-21T01:36:45.1574348Z         "int": {
2026-06-21T01:36:45.1574457Z           "complete": true,
2026-06-21T01:36:45.1574573Z           "evidence": [
2026-06-21T01:36:45.1574672Z             {
2026-06-21T01:36:45.1574824Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1574935Z               "line": 563
2026-06-21T01:36:45.1575038Z             },
2026-06-21T01:36:45.1575142Z             {
2026-06-21T01:36:45.1575295Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1575402Z               "line": 747
2026-06-21T01:36:45.1575507Z             },
2026-06-21T01:36:45.1575613Z             {
2026-06-21T01:36:45.1575759Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1575875Z               "line": 1165
2026-06-21T01:36:45.1575985Z             }
2026-06-21T01:36:45.1576084Z           ]
2026-06-21T01:36:45.1576185Z         },
2026-06-21T01:36:45.1576417Z         "unit": {
2026-06-21T01:36:45.1576533Z           "complete": true,
2026-06-21T01:36:45.1576637Z           "evidence": [
2026-06-21T01:36:45.1576737Z             {
2026-06-21T01:36:45.1576886Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.1576990Z               "line": 674
2026-06-21T01:36:45.1577095Z             },
2026-06-21T01:36:45.1577192Z             {
2026-06-21T01:36:45.1577343Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1577458Z               "line": 238
2026-06-21T01:36:45.1577563Z             },
2026-06-21T01:36:45.1577662Z             {
2026-06-21T01:36:45.1577795Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1578002Z               "line": 269
2026-06-21T01:36:45.1578112Z             },
2026-06-21T01:36:45.1578213Z             {
2026-06-21T01:36:45.1578345Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1578452Z               "line": 305
2026-06-21T01:36:45.1578561Z             },
2026-06-21T01:36:45.1578660Z             {
2026-06-21T01:36:45.1578804Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T01:36:45.1578908Z               "line": 336
2026-06-21T01:36:45.1579110Z             },
2026-06-21T01:36:45.1579214Z             {
2026-06-21T01:36:45.1579381Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1579504Z               "line": 1217
2026-06-21T01:36:45.1579604Z             },
2026-06-21T01:36:45.1579711Z             {
2026-06-21T01:36:45.1579857Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.1579977Z               "line": 1163
2026-06-21T01:36:45.1580082Z             }
2026-06-21T01:36:45.1580181Z           ]
2026-06-21T01:36:45.1580277Z         }
2026-06-21T01:36:45.1580379Z       }
2026-06-21T01:36:45.1580481Z     },
2026-06-21T01:36:45.1580580Z     {
2026-06-21T01:36:45.1580701Z       "id": "REQ-RC-1",
2026-06-21T01:36:45.1582835Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T01:36:45.1582983Z       "requiredStages": [
2026-06-21T01:36:45.1583091Z         "impl",
2026-06-21T01:36:45.1583200Z         "unit",
2026-06-21T01:36:45.1583297Z         "int"
2026-06-21T01:36:45.1583396Z       ],
2026-06-21T01:36:45.1583501Z       "stages": {
2026-06-21T01:36:45.1583606Z         "doc": {
2026-06-21T01:36:45.1583711Z           "complete": false,
2026-06-21T01:36:45.1583834Z           "evidence": []
2026-06-21T01:36:45.1583935Z         },
2026-06-21T01:36:45.1584044Z         "impl": {
2026-06-21T01:36:45.1584159Z           "complete": true,
2026-06-21T01:36:45.1584254Z           "evidence": [
2026-06-21T01:36:45.1584364Z             {
2026-06-21T01:36:45.1584513Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.1584631Z               "line": 944
2026-06-21T01:36:45.1584735Z             },
2026-06-21T01:36:45.1584837Z             {
2026-06-21T01:36:45.1584993Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1585103Z               "line": 1926
2026-06-21T01:36:45.1585213Z             },
2026-06-21T01:36:45.1585317Z             {
2026-06-21T01:36:45.1585467Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1585575Z               "line": 967
2026-06-21T01:36:45.1585669Z             },
2026-06-21T01:36:45.1585774Z             {
2026-06-21T01:36:45.1586024Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1586134Z               "line": 1001
2026-06-21T01:36:45.1586235Z             },
2026-06-21T01:36:45.1586343Z             {
2026-06-21T01:36:45.1586478Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1586578Z               "line": 22
2026-06-21T01:36:45.1586687Z             },
2026-06-21T01:36:45.1586783Z             {
2026-06-21T01:36:45.1586912Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1587021Z               "line": 701
2026-06-21T01:36:45.1587122Z             }
2026-06-21T01:36:45.1587227Z           ]
2026-06-21T01:36:45.1587326Z         },
2026-06-21T01:36:45.1587516Z         "int": {
2026-06-21T01:36:45.1587631Z           "complete": true,
2026-06-21T01:36:45.1587747Z           "evidence": [
2026-06-21T01:36:45.1587850Z             {
2026-06-21T01:36:45.1587990Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1588095Z               "line": 258
2026-06-21T01:36:45.1588193Z             },
2026-06-21T01:36:45.1588297Z             {
2026-06-21T01:36:45.1588440Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1588548Z               "line": 285
2026-06-21T01:36:45.1588649Z             },
2026-06-21T01:36:45.1588754Z             {
2026-06-21T01:36:45.1588901Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1589087Z               "line": 413
2026-06-21T01:36:45.1589177Z             }
2026-06-21T01:36:45.1589278Z           ]
2026-06-21T01:36:45.1589369Z         },
2026-06-21T01:36:45.1589469Z         "unit": {
2026-06-21T01:36:45.1589578Z           "complete": true,
2026-06-21T01:36:45.1589689Z           "evidence": [
2026-06-21T01:36:45.1589793Z             {
2026-06-21T01:36:45.1589927Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1590031Z               "line": 1327
2026-06-21T01:36:45.1590140Z             },
2026-06-21T01:36:45.1590237Z             {
2026-06-21T01:36:45.1590365Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1590469Z               "line": 1133
2026-06-21T01:36:45.1590571Z             },
2026-06-21T01:36:45.1590666Z             {
2026-06-21T01:36:45.1590784Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1590895Z               "line": 1162
2026-06-21T01:36:45.1590999Z             },
2026-06-21T01:36:45.1591103Z             {
2026-06-21T01:36:45.1591232Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1591338Z               "line": 1175
2026-06-21T01:36:45.1591437Z             }
2026-06-21T01:36:45.1591523Z           ]
2026-06-21T01:36:45.1591628Z         }
2026-06-21T01:36:45.1591742Z       }
2026-06-21T01:36:45.1591842Z     },
2026-06-21T01:36:45.1591942Z     {
2026-06-21T01:36:45.1592066Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T01:36:45.1598167Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T01:36:45.1598574Z       "requiredStages": [
2026-06-21T01:36:45.1598679Z         "doc",
2026-06-21T01:36:45.1598791Z         "impl",
2026-06-21T01:36:45.1598896Z         "unit"
2026-06-21T01:36:45.1599084Z       ],
2026-06-21T01:36:45.1599194Z       "stages": {
2026-06-21T01:36:45.1599304Z         "doc": {
2026-06-21T01:36:45.1599418Z           "complete": true,
2026-06-21T01:36:45.1599523Z           "evidence": [
2026-06-21T01:36:45.1599628Z             {
2026-06-21T01:36:45.1599742Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1599853Z               "line": 345
2026-06-21T01:36:45.1599957Z             },
2026-06-21T01:36:45.1600066Z             {
2026-06-21T01:36:45.1600201Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.1600300Z               "line": 440
2026-06-21T01:36:45.1600405Z             }
2026-06-21T01:36:45.1600502Z           ]
2026-06-21T01:36:45.1600606Z         },
2026-06-21T01:36:45.1600720Z         "impl": {
2026-06-21T01:36:45.1600826Z           "complete": true,
2026-06-21T01:36:45.1600939Z           "evidence": [
2026-06-21T01:36:45.1601030Z             {
2026-06-21T01:36:45.1601160Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1601259Z               "line": 226
2026-06-21T01:36:45.1601368Z             },
2026-06-21T01:36:45.1601475Z             {
2026-06-21T01:36:45.1601597Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1601710Z               "line": 285
2026-06-21T01:36:45.1601806Z             },
2026-06-21T01:36:45.1601907Z             {
2026-06-21T01:36:45.1602021Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1602126Z               "line": 300
2026-06-21T01:36:45.1602236Z             },
2026-06-21T01:36:45.1602335Z             {
2026-06-21T01:36:45.1602456Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1602560Z               "line": 315
2026-06-21T01:36:45.1602669Z             },
2026-06-21T01:36:45.1602775Z             {
2026-06-21T01:36:45.1602903Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1603017Z               "line": 364
2026-06-21T01:36:45.1603114Z             }
2026-06-21T01:36:45.1603208Z           ]
2026-06-21T01:36:45.1603299Z         },
2026-06-21T01:36:45.1603400Z         "int": {
2026-06-21T01:36:45.1603517Z           "complete": false,
2026-06-21T01:36:45.1603637Z           "evidence": []
2026-06-21T01:36:45.1603744Z         },
2026-06-21T01:36:45.1603846Z         "unit": {
2026-06-21T01:36:45.1603965Z           "complete": true,
2026-06-21T01:36:45.1604070Z           "evidence": [
2026-06-21T01:36:45.1604163Z             {
2026-06-21T01:36:45.1604282Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1604392Z               "line": 1190
2026-06-21T01:36:45.1604502Z             },
2026-06-21T01:36:45.1604606Z             {
2026-06-21T01:36:45.1604731Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1604845Z               "line": 1305
2026-06-21T01:36:45.1604950Z             }
2026-06-21T01:36:45.1605046Z           ]
2026-06-21T01:36:45.1605145Z         }
2026-06-21T01:36:45.1605250Z       }
2026-06-21T01:36:45.1605337Z     },
2026-06-21T01:36:45.1605432Z     {
2026-06-21T01:36:45.1605555Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T01:36:45.1610265Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T01:36:45.1610499Z       "requiredStages": [
2026-06-21T01:36:45.1610608Z         "doc",
2026-06-21T01:36:45.1610708Z         "impl",
2026-06-21T01:36:45.1610804Z         "unit"
2026-06-21T01:36:45.1610904Z       ],
2026-06-21T01:36:45.1611004Z       "stages": {
2026-06-21T01:36:45.1611110Z         "doc": {
2026-06-21T01:36:45.1611219Z           "complete": true,
2026-06-21T01:36:45.1611323Z           "evidence": [
2026-06-21T01:36:45.1611443Z             {
2026-06-21T01:36:45.1611595Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.1611697Z               "line": 461
2026-06-21T01:36:45.1611800Z             }
2026-06-21T01:36:45.1611900Z           ]
2026-06-21T01:36:45.1612002Z         },
2026-06-21T01:36:45.1612111Z         "impl": {
2026-06-21T01:36:45.1612209Z           "complete": true,
2026-06-21T01:36:45.1612314Z           "evidence": [
2026-06-21T01:36:45.1612401Z             {
2026-06-21T01:36:45.1612528Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1612628Z               "line": 421
2026-06-21T01:36:45.1612725Z             },
2026-06-21T01:36:45.1612824Z             {
2026-06-21T01:36:45.1612943Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1613054Z               "line": 437
2026-06-21T01:36:45.1613153Z             }
2026-06-21T01:36:45.1613253Z           ]
2026-06-21T01:36:45.1613354Z         },
2026-06-21T01:36:45.1613454Z         "int": {
2026-06-21T01:36:45.1613568Z           "complete": false,
2026-06-21T01:36:45.1613669Z           "evidence": []
2026-06-21T01:36:45.1613773Z         },
2026-06-21T01:36:45.1613873Z         "unit": {
2026-06-21T01:36:45.1613984Z           "complete": true,
2026-06-21T01:36:45.1614092Z           "evidence": [
2026-06-21T01:36:45.1614193Z             {
2026-06-21T01:36:45.1614318Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1614411Z               "line": 1440
2026-06-21T01:36:45.1614515Z             },
2026-06-21T01:36:45.1614616Z             {
2026-06-21T01:36:45.1614737Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1614846Z               "line": 1459
2026-06-21T01:36:45.1614933Z             },
2026-06-21T01:36:45.1615025Z             {
2026-06-21T01:36:45.1615133Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1615238Z               "line": 1471
2026-06-21T01:36:45.1615324Z             },
2026-06-21T01:36:45.1615429Z             {
2026-06-21T01:36:45.1615544Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1615644Z               "line": 1499
2026-06-21T01:36:45.1615844Z             }
2026-06-21T01:36:45.1615939Z           ]
2026-06-21T01:36:45.1616044Z         }
2026-06-21T01:36:45.1616149Z       }
2026-06-21T01:36:45.1616250Z     },
2026-06-21T01:36:45.1616349Z     {
2026-06-21T01:36:45.1616464Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T01:36:45.1621393Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T01:36:45.1621650Z       "requiredStages": [
2026-06-21T01:36:45.1621755Z         "doc",
2026-06-21T01:36:45.1621859Z         "impl",
2026-06-21T01:36:45.1621947Z         "unit"
2026-06-21T01:36:45.1622045Z       ],
2026-06-21T01:36:45.1622141Z       "stages": {
2026-06-21T01:36:45.1622242Z         "doc": {
2026-06-21T01:36:45.1622351Z           "complete": true,
2026-06-21T01:36:45.1622461Z           "evidence": [
2026-06-21T01:36:45.1622562Z             {
2026-06-21T01:36:45.1622685Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T01:36:45.1622793Z               "line": 447
2026-06-21T01:36:45.1622883Z             }
2026-06-21T01:36:45.1622984Z           ]
2026-06-21T01:36:45.1623084Z         },
2026-06-21T01:36:45.1623193Z         "impl": {
2026-06-21T01:36:45.1623308Z           "complete": true,
2026-06-21T01:36:45.1623413Z           "evidence": [
2026-06-21T01:36:45.1623513Z             {
2026-06-21T01:36:45.1623628Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1623732Z               "line": 395
2026-06-21T01:36:45.1623837Z             },
2026-06-21T01:36:45.1623948Z             {
2026-06-21T01:36:45.1624066Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1624172Z               "line": 411
2026-06-21T01:36:45.1624267Z             },
2026-06-21T01:36:45.1624367Z             {
2026-06-21T01:36:45.1624487Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1624587Z               "line": 454
2026-06-21T01:36:45.1624686Z             },
2026-06-21T01:36:45.1624791Z             {
2026-06-21T01:36:45.1624911Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1625014Z               "line": 468
2026-06-21T01:36:45.1625109Z             },
2026-06-21T01:36:45.1625228Z             {
2026-06-21T01:36:45.1625341Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1625446Z               "line": 479
2026-06-21T01:36:45.1625546Z             }
2026-06-21T01:36:45.1625646Z           ]
2026-06-21T01:36:45.1625746Z         },
2026-06-21T01:36:45.1625837Z         "int": {
2026-06-21T01:36:45.1626060Z           "complete": false,
2026-06-21T01:36:45.1626176Z           "evidence": []
2026-06-21T01:36:45.1626271Z         },
2026-06-21T01:36:45.1626375Z         "unit": {
2026-06-21T01:36:45.1626477Z           "complete": true,
2026-06-21T01:36:45.1626585Z           "evidence": [
2026-06-21T01:36:45.1626685Z             {
2026-06-21T01:36:45.1626805Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1626914Z               "line": 1381
2026-06-21T01:36:45.1627014Z             },
2026-06-21T01:36:45.1627116Z             {
2026-06-21T01:36:45.1627219Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1627334Z               "line": 1402
2026-06-21T01:36:45.1627500Z             },
2026-06-21T01:36:45.1627591Z             {
2026-06-21T01:36:45.1627712Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1627820Z               "line": 1423
2026-06-21T01:36:45.1627924Z             }
2026-06-21T01:36:45.1628019Z           ]
2026-06-21T01:36:45.1628123Z         }
2026-06-21T01:36:45.1628222Z       }
2026-06-21T01:36:45.1628318Z     },
2026-06-21T01:36:45.1628423Z     {
2026-06-21T01:36:45.1628527Z       "id": "REQ-RCVIEW-1",
2026-06-21T01:36:45.1633193Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T01:36:45.1633348Z       "requiredStages": [
2026-06-21T01:36:45.1633443Z         "doc",
2026-06-21T01:36:45.1633545Z         "impl",
2026-06-21T01:36:45.1633640Z         "unit",
2026-06-21T01:36:45.1633744Z         "int"
2026-06-21T01:36:45.1633826Z       ],
2026-06-21T01:36:45.1633940Z       "stages": {
2026-06-21T01:36:45.1634044Z         "doc": {
2026-06-21T01:36:45.1634155Z           "complete": true,
2026-06-21T01:36:45.1634260Z           "evidence": [
2026-06-21T01:36:45.1634359Z             {
2026-06-21T01:36:45.1634465Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1634569Z               "line": 342
2026-06-21T01:36:45.1634669Z             }
2026-06-21T01:36:45.1634770Z           ]
2026-06-21T01:36:45.1634874Z         },
2026-06-21T01:36:45.1634974Z         "impl": {
2026-06-21T01:36:45.1635085Z           "complete": true,
2026-06-21T01:36:45.1635189Z           "evidence": [
2026-06-21T01:36:45.1635289Z             {
2026-06-21T01:36:45.1635433Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T01:36:45.1635536Z               "line": 354
2026-06-21T01:36:45.1635645Z             },
2026-06-21T01:36:45.1635746Z             {
2026-06-21T01:36:45.1635881Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1635991Z               "line": 574
2026-06-21T01:36:45.1636088Z             },
2026-06-21T01:36:45.1636296Z             {
2026-06-21T01:36:45.1636430Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1636539Z               "line": 585
2026-06-21T01:36:45.1636635Z             },
2026-06-21T01:36:45.1636741Z             {
2026-06-21T01:36:45.1636887Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.1636989Z               "line": 41
2026-06-21T01:36:45.1637093Z             },
2026-06-21T01:36:45.1637188Z             {
2026-06-21T01:36:45.1637318Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.1637422Z               "line": 62
2026-06-21T01:36:45.1637642Z             },
2026-06-21T01:36:45.1637746Z             {
2026-06-21T01:36:45.1637875Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.1637986Z               "line": 309
2026-06-21T01:36:45.1638070Z             },
2026-06-21T01:36:45.1638170Z             {
2026-06-21T01:36:45.1638281Z               "path": "crates/spt/src/rc.rs",
2026-06-21T01:36:45.1638390Z               "line": 701
2026-06-21T01:36:45.1638494Z             }
2026-06-21T01:36:45.1638584Z           ]
2026-06-21T01:36:45.1638674Z         },
2026-06-21T01:36:45.1638777Z         "int": {
2026-06-21T01:36:45.1638892Z           "complete": true,
2026-06-21T01:36:45.1639073Z           "evidence": [
2026-06-21T01:36:45.1639177Z             {
2026-06-21T01:36:45.1639321Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1639430Z               "line": 913
2026-06-21T01:36:45.1639531Z             },
2026-06-21T01:36:45.1639631Z             {
2026-06-21T01:36:45.1639754Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1639865Z               "line": 953
2026-06-21T01:36:45.1639960Z             },
2026-06-21T01:36:45.1640050Z             {
2026-06-21T01:36:45.1640185Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1640289Z               "line": 1000
2026-06-21T01:36:45.1640394Z             },
2026-06-21T01:36:45.1640485Z             {
2026-06-21T01:36:45.1640627Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1640723Z               "line": 1112
2026-06-21T01:36:45.1640824Z             }
2026-06-21T01:36:45.1640919Z           ]
2026-06-21T01:36:45.1641023Z         },
2026-06-21T01:36:45.1641122Z         "unit": {
2026-06-21T01:36:45.1641231Z           "complete": true,
2026-06-21T01:36:45.1641335Z           "evidence": [
2026-06-21T01:36:45.1641430Z             {
2026-06-21T01:36:45.1641565Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.1641668Z               "line": 175
2026-06-21T01:36:45.1641764Z             },
2026-06-21T01:36:45.1641855Z             {
2026-06-21T01:36:45.1641983Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T01:36:45.1642098Z               "line": 195
2026-06-21T01:36:45.1642198Z             }
2026-06-21T01:36:45.1642302Z           ]
2026-06-21T01:36:45.1642398Z         }
2026-06-21T01:36:45.1642498Z       }
2026-06-21T01:36:45.1642594Z     },
2026-06-21T01:36:45.1642698Z     {
2026-06-21T01:36:45.1642808Z       "id": "REQ-REACH-1",
2026-06-21T01:36:45.1642970Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T01:36:45.1643081Z       "requiredStages": [
2026-06-21T01:36:45.1643180Z         "impl",
2026-06-21T01:36:45.1643285Z         "unit",
2026-06-21T01:36:45.1643386Z         "int"
2026-06-21T01:36:45.1643485Z       ],
2026-06-21T01:36:45.1643590Z       "stages": {
2026-06-21T01:36:45.1643682Z         "doc": {
2026-06-21T01:36:45.1643791Z           "complete": false,
2026-06-21T01:36:45.1643899Z           "evidence": []
2026-06-21T01:36:45.1644008Z         },
2026-06-21T01:36:45.1644110Z         "impl": {
2026-06-21T01:36:45.1644209Z           "complete": true,
2026-06-21T01:36:45.1644309Z           "evidence": [
2026-06-21T01:36:45.1644410Z             {
2026-06-21T01:36:45.1644552Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1644758Z               "line": 574
2026-06-21T01:36:45.1644848Z             },
2026-06-21T01:36:45.1644944Z             {
2026-06-21T01:36:45.1645082Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.1645191Z               "line": 76
2026-06-21T01:36:45.1645292Z             },
2026-06-21T01:36:45.1645397Z             {
2026-06-21T01:36:45.1645525Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.1645627Z               "line": 222
2026-06-21T01:36:45.1645721Z             },
2026-06-21T01:36:45.1645825Z             {
2026-06-21T01:36:45.1645960Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.1646153Z               "line": 422
2026-06-21T01:36:45.1646263Z             },
2026-06-21T01:36:45.1646358Z             {
2026-06-21T01:36:45.1646489Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.1646590Z               "line": 529
2026-06-21T01:36:45.1646691Z             },
2026-06-21T01:36:45.1646794Z             {
2026-06-21T01:36:45.1646928Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:36:45.1647034Z               "line": 39
2026-06-21T01:36:45.1647133Z             },
2026-06-21T01:36:45.1647229Z             {
2026-06-21T01:36:45.1647363Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.1647476Z               "line": 301
2026-06-21T01:36:45.1647582Z             },
2026-06-21T01:36:45.1647677Z             {
2026-06-21T01:36:45.1647806Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:36:45.1647911Z               "line": 88
2026-06-21T01:36:45.1648016Z             },
2026-06-21T01:36:45.1648110Z             {
2026-06-21T01:36:45.1648245Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:36:45.1648349Z               "line": 98
2026-06-21T01:36:45.1648445Z             },
2026-06-21T01:36:45.1648546Z             {
2026-06-21T01:36:45.1648678Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1648789Z               "line": 233
2026-06-21T01:36:45.1648880Z             }
2026-06-21T01:36:45.1649058Z           ]
2026-06-21T01:36:45.1649168Z         },
2026-06-21T01:36:45.1649272Z         "int": {
2026-06-21T01:36:45.1649380Z           "complete": true,
2026-06-21T01:36:45.1649490Z           "evidence": [
2026-06-21T01:36:45.1649591Z             {
2026-06-21T01:36:45.1649737Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1649849Z               "line": 415
2026-06-21T01:36:45.1649953Z             },
2026-06-21T01:36:45.1650043Z             {
2026-06-21T01:36:45.1650191Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1650296Z               "line": 520
2026-06-21T01:36:45.1650396Z             },
2026-06-21T01:36:45.1650492Z             {
2026-06-21T01:36:45.1650620Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1650731Z               "line": 998
2026-06-21T01:36:45.1650831Z             },
2026-06-21T01:36:45.1650935Z             {
2026-06-21T01:36:45.1651069Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1651183Z               "line": 1383
2026-06-21T01:36:45.1651283Z             }
2026-06-21T01:36:45.1651379Z           ]
2026-06-21T01:36:45.1651474Z         },
2026-06-21T01:36:45.1651578Z         "unit": {
2026-06-21T01:36:45.1651687Z           "complete": true,
2026-06-21T01:36:45.1651792Z           "evidence": [
2026-06-21T01:36:45.1651895Z             {
2026-06-21T01:36:45.1652028Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.1652130Z               "line": 639
2026-06-21T01:36:45.1652228Z             },
2026-06-21T01:36:45.1652334Z             {
2026-06-21T01:36:45.1652463Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T01:36:45.1652567Z               "line": 660
2026-06-21T01:36:45.1652673Z             },
2026-06-21T01:36:45.1652777Z             {
2026-06-21T01:36:45.1652901Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T01:36:45.1653111Z               "line": 768
2026-06-21T01:36:45.1653206Z             },
2026-06-21T01:36:45.1653307Z             {
2026-06-21T01:36:45.1653440Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T01:36:45.1653549Z               "line": 93
2026-06-21T01:36:45.1653651Z             },
2026-06-21T01:36:45.1653740Z             {
2026-06-21T01:36:45.1653869Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T01:36:45.1653975Z               "line": 224
2026-06-21T01:36:45.1654078Z             },
2026-06-21T01:36:45.1654160Z             {
2026-06-21T01:36:45.1654300Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:36:45.1654501Z               "line": 96
2026-06-21T01:36:45.1654598Z             },
2026-06-21T01:36:45.1654694Z             {
2026-06-21T01:36:45.1654816Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T01:36:45.1654927Z               "line": 146
2026-06-21T01:36:45.1655022Z             },
2026-06-21T01:36:45.1655127Z             {
2026-06-21T01:36:45.1655252Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.1655370Z               "line": 698
2026-06-21T01:36:45.1655460Z             },
2026-06-21T01:36:45.1655552Z             {
2026-06-21T01:36:45.1655680Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:36:45.1655775Z               "line": 118
2026-06-21T01:36:45.1655882Z             },
2026-06-21T01:36:45.1655985Z             {
2026-06-21T01:36:45.1656113Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T01:36:45.1656220Z               "line": 148
2026-06-21T01:36:45.1656318Z             },
2026-06-21T01:36:45.1656423Z             {
2026-06-21T01:36:45.1656553Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1656657Z               "line": 928
2026-06-21T01:36:45.1656752Z             }
2026-06-21T01:36:45.1656847Z           ]
2026-06-21T01:36:45.1656950Z         }
2026-06-21T01:36:45.1657045Z       }
2026-06-21T01:36:45.1657145Z     },
2026-06-21T01:36:45.1657241Z     {
2026-06-21T01:36:45.1657350Z       "id": "REQ-REACH-2",
2026-06-21T01:36:45.1657527Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T01:36:45.1657641Z       "requiredStages": [],
2026-06-21T01:36:45.1657750Z       "stages": {
2026-06-21T01:36:45.1657847Z         "doc": {
2026-06-21T01:36:45.1657960Z           "complete": false,
2026-06-21T01:36:45.1658065Z           "evidence": []
2026-06-21T01:36:45.1658252Z         },
2026-06-21T01:36:45.1658356Z         "impl": {
2026-06-21T01:36:45.1658462Z           "complete": false,
2026-06-21T01:36:45.1658576Z           "evidence": []
2026-06-21T01:36:45.1658700Z         },
2026-06-21T01:36:45.1658810Z         "int": {
2026-06-21T01:36:45.1658919Z           "complete": false,
2026-06-21T01:36:45.1659106Z           "evidence": []
2026-06-21T01:36:45.1659214Z         },
2026-06-21T01:36:45.1659315Z         "unit": {
2026-06-21T01:36:45.1659430Z           "complete": false,
2026-06-21T01:36:45.1659552Z           "evidence": []
2026-06-21T01:36:45.1659647Z         }
2026-06-21T01:36:45.1659738Z       }
2026-06-21T01:36:45.1659841Z     },
2026-06-21T01:36:45.1659945Z     {
2026-06-21T01:36:45.1660065Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T01:36:45.1663647Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T01:36:45.1663896Z       "requiredStages": [
2026-06-21T01:36:45.1664000Z         "doc",
2026-06-21T01:36:45.1664100Z         "impl",
2026-06-21T01:36:45.1664201Z         "unit",
2026-06-21T01:36:45.1664291Z         "int"
2026-06-21T01:36:45.1664487Z       ],
2026-06-21T01:36:45.1664592Z       "stages": {
2026-06-21T01:36:45.1664691Z         "doc": {
2026-06-21T01:36:45.1664793Z           "complete": true,
2026-06-21T01:36:45.1664893Z           "evidence": [
2026-06-21T01:36:45.1665000Z             {
2026-06-21T01:36:45.1665110Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1665225Z               "line": 372
2026-06-21T01:36:45.1665329Z             }
2026-06-21T01:36:45.1665415Z           ]
2026-06-21T01:36:45.1665520Z         },
2026-06-21T01:36:45.1665620Z         "impl": {
2026-06-21T01:36:45.1665734Z           "complete": true,
2026-06-21T01:36:45.1665831Z           "evidence": [
2026-06-21T01:36:45.1665935Z             {
2026-06-21T01:36:45.1666073Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1666183Z               "line": 110
2026-06-21T01:36:45.1666283Z             }
2026-06-21T01:36:45.1666378Z           ]
2026-06-21T01:36:45.1666474Z         },
2026-06-21T01:36:45.1666574Z         "int": {
2026-06-21T01:36:45.1666688Z           "complete": true,
2026-06-21T01:36:45.1666794Z           "evidence": [
2026-06-21T01:36:45.1666883Z             {
2026-06-21T01:36:45.1667046Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T01:36:45.1667151Z               "line": 26
2026-06-21T01:36:45.1667255Z             }
2026-06-21T01:36:45.1667354Z           ]
2026-06-21T01:36:45.1667459Z         },
2026-06-21T01:36:45.1667562Z         "unit": {
2026-06-21T01:36:45.1667667Z           "complete": true,
2026-06-21T01:36:45.1667778Z           "evidence": [
2026-06-21T01:36:45.1667877Z             {
2026-06-21T01:36:45.1668001Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T01:36:45.1668102Z               "line": 320
2026-06-21T01:36:45.1668210Z             }
2026-06-21T01:36:45.1668320Z           ]
2026-06-21T01:36:45.1668416Z         }
2026-06-21T01:36:45.1668515Z       }
2026-06-21T01:36:45.1668601Z     },
2026-06-21T01:36:45.1668707Z     {
2026-06-21T01:36:45.1668812Z       "id": "REQ-REL-1",
2026-06-21T01:36:45.1673387Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T01:36:45.1673522Z       "requiredStages": [
2026-06-21T01:36:45.1673626Z         "doc",
2026-06-21T01:36:45.1673730Z         "impl"
2026-06-21T01:36:45.1673831Z       ],
2026-06-21T01:36:45.1673936Z       "stages": {
2026-06-21T01:36:45.1674035Z         "doc": {
2026-06-21T01:36:45.1674146Z           "complete": true,
2026-06-21T01:36:45.1674260Z           "evidence": [
2026-06-21T01:36:45.1674355Z             {
2026-06-21T01:36:45.1674603Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T01:36:45.1674708Z               "line": 3
2026-06-21T01:36:45.1674814Z             }
2026-06-21T01:36:45.1674913Z           ]
2026-06-21T01:36:45.1675023Z         },
2026-06-21T01:36:45.1675124Z         "impl": {
2026-06-21T01:36:45.1675227Z           "complete": true,
2026-06-21T01:36:45.1675348Z           "evidence": [
2026-06-21T01:36:45.1675434Z             {
2026-06-21T01:36:45.1675579Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T01:36:45.1675684Z               "line": 11
2026-06-21T01:36:45.1675785Z             },
2026-06-21T01:36:45.1675894Z             {
2026-06-21T01:36:45.1676171Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1676275Z               "line": 265
2026-06-21T01:36:45.1676367Z             }
2026-06-21T01:36:45.1676462Z           ]
2026-06-21T01:36:45.1676566Z         },
2026-06-21T01:36:45.1676667Z         "int": {
2026-06-21T01:36:45.1676776Z           "complete": false,
2026-06-21T01:36:45.1676885Z           "evidence": []
2026-06-21T01:36:45.1676982Z         },
2026-06-21T01:36:45.1677081Z         "unit": {
2026-06-21T01:36:45.1677191Z           "complete": false,
2026-06-21T01:36:45.1677297Z           "evidence": []
2026-06-21T01:36:45.1677396Z         }
2026-06-21T01:36:45.1677592Z       }
2026-06-21T01:36:45.1677688Z     },
2026-06-21T01:36:45.1677787Z     {
2026-06-21T01:36:45.1677890Z       "id": "REQ-REL-2",
2026-06-21T01:36:45.1678408Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T01:36:45.1678522Z       "requiredStages": [
2026-06-21T01:36:45.1678628Z         "impl",
2026-06-21T01:36:45.1678732Z         "int"
2026-06-21T01:36:45.1678823Z       ],
2026-06-21T01:36:45.1678929Z       "stages": {
2026-06-21T01:36:45.1679109Z         "doc": {
2026-06-21T01:36:45.1679225Z           "complete": true,
2026-06-21T01:36:45.1679324Z           "evidence": [
2026-06-21T01:36:45.1679428Z             {
2026-06-21T01:36:45.1679559Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T01:36:45.1679662Z               "line": 6
2026-06-21T01:36:45.1679767Z             }
2026-06-21T01:36:45.1679864Z           ]
2026-06-21T01:36:45.1679972Z         },
2026-06-21T01:36:45.1680077Z         "impl": {
2026-06-21T01:36:45.1680188Z           "complete": true,
2026-06-21T01:36:45.1680296Z           "evidence": [
2026-06-21T01:36:45.1680392Z             {
2026-06-21T01:36:45.1680527Z               "path": ".github/workflows/release.yml",
2026-06-21T01:36:45.1680630Z               "line": 16
2026-06-21T01:36:45.1680734Z             },
2026-06-21T01:36:45.1680835Z             {
2026-06-21T01:36:45.1680961Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1681065Z               "line": 352
2026-06-21T01:36:45.1681157Z             },
2026-06-21T01:36:45.1681262Z             {
2026-06-21T01:36:45.1681370Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1681472Z               "line": 426
2026-06-21T01:36:45.1681562Z             },
2026-06-21T01:36:45.1681662Z             {
2026-06-21T01:36:45.1681782Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1681886Z               "line": 588
2026-06-21T01:36:45.1681981Z             },
2026-06-21T01:36:45.1682072Z             {
2026-06-21T01:36:45.1682205Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1682310Z               "line": 720
2026-06-21T01:36:45.1682411Z             }
2026-06-21T01:36:45.1682516Z           ]
2026-06-21T01:36:45.1682615Z         },
2026-06-21T01:36:45.1682716Z         "int": {
2026-06-21T01:36:45.1682821Z           "complete": true,
2026-06-21T01:36:45.1682935Z           "evidence": [
2026-06-21T01:36:45.1683031Z             {
2026-06-21T01:36:45.1683178Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T01:36:45.1683277Z               "line": 13
2026-06-21T01:36:45.1683377Z             }
2026-06-21T01:36:45.1683481Z           ]
2026-06-21T01:36:45.1683580Z         },
2026-06-21T01:36:45.1683685Z         "unit": {
2026-06-21T01:36:45.1683790Z           "complete": false,
2026-06-21T01:36:45.1683899Z           "evidence": []
2026-06-21T01:36:45.1683999Z         }
2026-06-21T01:36:45.1684105Z       }
2026-06-21T01:36:45.1684209Z     },
2026-06-21T01:36:45.1684295Z     {
2026-06-21T01:36:45.1684401Z       "id": "REQ-REL-3",
2026-06-21T01:36:45.1684863Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T01:36:45.1685083Z       "requiredStages": [
2026-06-21T01:36:45.1685192Z         "impl",
2026-06-21T01:36:45.1685293Z         "unit"
2026-06-21T01:36:45.1685388Z       ],
2026-06-21T01:36:45.1685493Z       "stages": {
2026-06-21T01:36:45.1685598Z         "doc": {
2026-06-21T01:36:45.1685707Z           "complete": false,
2026-06-21T01:36:45.1685812Z           "evidence": []
2026-06-21T01:36:45.1685918Z         },
2026-06-21T01:36:45.1686018Z         "impl": {
2026-06-21T01:36:45.1686120Z           "complete": true,
2026-06-21T01:36:45.1686220Z           "evidence": [
2026-06-21T01:36:45.1686326Z             {
2026-06-21T01:36:45.1686468Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.1686669Z               "line": 237
2026-06-21T01:36:45.1686769Z             },
2026-06-21T01:36:45.1686869Z             {
2026-06-21T01:36:45.1687012Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.1687112Z               "line": 289
2026-06-21T01:36:45.1687208Z             },
2026-06-21T01:36:45.1687304Z             {
2026-06-21T01:36:45.1687422Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1687528Z               "line": 329
2026-06-21T01:36:45.1687628Z             },
2026-06-21T01:36:45.1687727Z             {
2026-06-21T01:36:45.1687838Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1687943Z               "line": 353
2026-06-21T01:36:45.1688047Z             },
2026-06-21T01:36:45.1688152Z             {
2026-06-21T01:36:45.1688276Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.1688380Z               "line": 394
2026-06-21T01:36:45.1688485Z             }
2026-06-21T01:36:45.1688584Z           ]
2026-06-21T01:36:45.1688687Z         },
2026-06-21T01:36:45.1688787Z         "int": {
2026-06-21T01:36:45.1688888Z           "complete": false,
2026-06-21T01:36:45.1689087Z           "evidence": []
2026-06-21T01:36:45.1689184Z         },
2026-06-21T01:36:45.1689293Z         "unit": {
2026-06-21T01:36:45.1689397Z           "complete": true,
2026-06-21T01:36:45.1689499Z           "evidence": [
2026-06-21T01:36:45.1689608Z             {
2026-06-21T01:36:45.1689736Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.1689846Z               "line": 1045
2026-06-21T01:36:45.1689946Z             },
2026-06-21T01:36:45.1690051Z             {
2026-06-21T01:36:45.1690185Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.1690280Z               "line": 1104
2026-06-21T01:36:45.1690385Z             }
2026-06-21T01:36:45.1690486Z           ]
2026-06-21T01:36:45.1690585Z         }
2026-06-21T01:36:45.1690685Z       }
2026-06-21T01:36:45.1690791Z     },
2026-06-21T01:36:45.1690890Z     {
2026-06-21T01:36:45.1691010Z       "id": "REQ-RUN-PICKER",
2026-06-21T01:36:45.1695957Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T01:36:45.1696230Z       "requiredStages": [
2026-06-21T01:36:45.1696343Z         "doc",
2026-06-21T01:36:45.1696444Z         "impl",
2026-06-21T01:36:45.1696549Z         "unit"
2026-06-21T01:36:45.1696652Z       ],
2026-06-21T01:36:45.1696752Z       "stages": {
2026-06-21T01:36:45.1696949Z         "doc": {
2026-06-21T01:36:45.1697057Z           "complete": true,
2026-06-21T01:36:45.1697172Z           "evidence": [
2026-06-21T01:36:45.1697263Z             {
2026-06-21T01:36:45.1697371Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1697482Z               "line": 349
2026-06-21T01:36:45.1697582Z             }
2026-06-21T01:36:45.1697696Z           ]
2026-06-21T01:36:45.1697788Z         },
2026-06-21T01:36:45.1697897Z         "impl": {
2026-06-21T01:36:45.1698001Z           "complete": true,
2026-06-21T01:36:45.1698103Z           "evidence": [
2026-06-21T01:36:45.1698216Z             {
2026-06-21T01:36:45.1698340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1698436Z               "line": 958
2026-06-21T01:36:45.1698536Z             },
2026-06-21T01:36:45.1698640Z             {
2026-06-21T01:36:45.1698761Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1698864Z               "line": 968
2026-06-21T01:36:45.1699040Z             },
2026-06-21T01:36:45.1699140Z             {
2026-06-21T01:36:45.1699271Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1699376Z               "line": 9
2026-06-21T01:36:45.1699477Z             },
2026-06-21T01:36:45.1699562Z             {
2026-06-21T01:36:45.1699691Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T01:36:45.1699796Z               "line": 67
2026-06-21T01:36:45.1699881Z             },
2026-06-21T01:36:45.1699976Z             {
2026-06-21T01:36:45.1700106Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T01:36:45.1700215Z               "line": 16
2026-06-21T01:36:45.1700311Z             },
2026-06-21T01:36:45.1700407Z             {
2026-06-21T01:36:45.1700539Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T01:36:45.1700645Z               "line": 254
2026-06-21T01:36:45.1700745Z             },
2026-06-21T01:36:45.1700840Z             {
2026-06-21T01:36:45.1700974Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1701079Z               "line": 11
2026-06-21T01:36:45.1701183Z             },
2026-06-21T01:36:45.1701285Z             {
2026-06-21T01:36:45.1701412Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1701517Z               "line": 115
2026-06-21T01:36:45.1701614Z             },
2026-06-21T01:36:45.1701718Z             {
2026-06-21T01:36:45.1701845Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1701955Z               "line": 554
2026-06-21T01:36:45.1702058Z             },
2026-06-21T01:36:45.1702157Z             {
2026-06-21T01:36:45.1702291Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1702392Z               "line": 635
2026-06-21T01:36:45.1702496Z             },
2026-06-21T01:36:45.1702597Z             {
2026-06-21T01:36:45.1702721Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1702829Z               "line": 694
2026-06-21T01:36:45.1702926Z             },
2026-06-21T01:36:45.1703026Z             {
2026-06-21T01:36:45.1703154Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1703260Z               "line": 747
2026-06-21T01:36:45.1703364Z             },
2026-06-21T01:36:45.1703459Z             {
2026-06-21T01:36:45.1703594Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1703797Z               "line": 785
2026-06-21T01:36:45.1703894Z             },
2026-06-21T01:36:45.1703993Z             {
2026-06-21T01:36:45.1704117Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1704233Z               "line": 8
2026-06-21T01:36:45.1704331Z             }
2026-06-21T01:36:45.1704430Z           ]
2026-06-21T01:36:45.1704526Z         },
2026-06-21T01:36:45.1704629Z         "int": {
2026-06-21T01:36:45.1704733Z           "complete": false,
2026-06-21T01:36:45.1704844Z           "evidence": []
2026-06-21T01:36:45.1704944Z         },
2026-06-21T01:36:45.1705034Z         "unit": {
2026-06-21T01:36:45.1705139Z           "complete": true,
2026-06-21T01:36:45.1705334Z           "evidence": [
2026-06-21T01:36:45.1705435Z             {
2026-06-21T01:36:45.1705545Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1705658Z               "line": 7638
2026-06-21T01:36:45.1705759Z             },
2026-06-21T01:36:45.1705859Z             {
2026-06-21T01:36:45.1705987Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1706088Z               "line": 7649
2026-06-21T01:36:45.1706183Z             },
2026-06-21T01:36:45.1706279Z             {
2026-06-21T01:36:45.1706403Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1706498Z               "line": 879
2026-06-21T01:36:45.1706598Z             },
2026-06-21T01:36:45.1706704Z             {
2026-06-21T01:36:45.1706823Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1706932Z               "line": 928
2026-06-21T01:36:45.1707028Z             },
2026-06-21T01:36:45.1707133Z             {
2026-06-21T01:36:45.1707274Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1707374Z               "line": 979
2026-06-21T01:36:45.1707475Z             },
2026-06-21T01:36:45.1707561Z             {
2026-06-21T01:36:45.1707694Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1707785Z               "line": 996
2026-06-21T01:36:45.1707889Z             },
2026-06-21T01:36:45.1707994Z             {
2026-06-21T01:36:45.1708124Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1708232Z               "line": 1005
2026-06-21T01:36:45.1708328Z             },
2026-06-21T01:36:45.1708433Z             {
2026-06-21T01:36:45.1708561Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1708668Z               "line": 1016
2026-06-21T01:36:45.1708772Z             },
2026-06-21T01:36:45.1708862Z             {
2026-06-21T01:36:45.1709053Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1709147Z               "line": 1038
2026-06-21T01:36:45.1709244Z             },
2026-06-21T01:36:45.1709335Z             {
2026-06-21T01:36:45.1709467Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1709571Z               "line": 1057
2026-06-21T01:36:45.1709662Z             },
2026-06-21T01:36:45.1709765Z             {
2026-06-21T01:36:45.1709893Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1710004Z               "line": 1107
2026-06-21T01:36:45.1710104Z             },
2026-06-21T01:36:45.1710203Z             {
2026-06-21T01:36:45.1710333Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1710432Z               "line": 1136
2026-06-21T01:36:45.1710527Z             },
2026-06-21T01:36:45.1710619Z             {
2026-06-21T01:36:45.1710752Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1710856Z               "line": 1149
2026-06-21T01:36:45.1710953Z             },
2026-06-21T01:36:45.1711057Z             {
2026-06-21T01:36:45.1711185Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1711291Z               "line": 1215
2026-06-21T01:36:45.1711391Z             },
2026-06-21T01:36:45.1711495Z             {
2026-06-21T01:36:45.1711630Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1711729Z               "line": 1256
2026-06-21T01:36:45.1711959Z             },
2026-06-21T01:36:45.1712054Z             {
2026-06-21T01:36:45.1712179Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1712274Z               "line": 1272
2026-06-21T01:36:45.1712377Z             },
2026-06-21T01:36:45.1712482Z             {
2026-06-21T01:36:45.1712609Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1712717Z               "line": 491
2026-06-21T01:36:45.1712818Z             },
2026-06-21T01:36:45.1712923Z             {
2026-06-21T01:36:45.1713056Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1713167Z               "line": 506
2026-06-21T01:36:45.1713356Z             },
2026-06-21T01:36:45.1713457Z             {
2026-06-21T01:36:45.1713586Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1713680Z               "line": 524
2026-06-21T01:36:45.1713786Z             },
2026-06-21T01:36:45.1713876Z             {
2026-06-21T01:36:45.1714014Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1714116Z               "line": 546
2026-06-21T01:36:45.1714214Z             },
2026-06-21T01:36:45.1714315Z             {
2026-06-21T01:36:45.1714430Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1714539Z               "line": 556
2026-06-21T01:36:45.1714630Z             },
2026-06-21T01:36:45.1714731Z             {
2026-06-21T01:36:45.1714863Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T01:36:45.1714967Z               "line": 582
2026-06-21T01:36:45.1715072Z             }
2026-06-21T01:36:45.1715171Z           ]
2026-06-21T01:36:45.1715279Z         }
2026-06-21T01:36:45.1715375Z       }
2026-06-21T01:36:45.1715471Z     },
2026-06-21T01:36:45.1715575Z     {
2026-06-21T01:36:45.1715680Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T01:36:45.1720626Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T01:36:45.1720768Z       "requiredStages": [
2026-06-21T01:36:45.1720884Z         "doc",
2026-06-21T01:36:45.1720983Z         "impl",
2026-06-21T01:36:45.1721092Z         "unit"
2026-06-21T01:36:45.1721198Z       ],
2026-06-21T01:36:45.1721293Z       "stages": {
2026-06-21T01:36:45.1721387Z         "doc": {
2026-06-21T01:36:45.1721498Z           "complete": true,
2026-06-21T01:36:45.1721603Z           "evidence": [
2026-06-21T01:36:45.1721692Z             {
2026-06-21T01:36:45.1721818Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1722022Z               "line": 390
2026-06-21T01:36:45.1722123Z             }
2026-06-21T01:36:45.1722227Z           ]
2026-06-21T01:36:45.1722322Z         },
2026-06-21T01:36:45.1722429Z         "impl": {
2026-06-21T01:36:45.1722533Z           "complete": true,
2026-06-21T01:36:45.1722642Z           "evidence": [
2026-06-21T01:36:45.1722739Z             {
2026-06-21T01:36:45.1722890Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1722998Z               "line": 39
2026-06-21T01:36:45.1723084Z             },
2026-06-21T01:36:45.1723188Z             {
2026-06-21T01:36:45.1723316Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1723526Z               "line": 79
2026-06-21T01:36:45.1723625Z             },
2026-06-21T01:36:45.1723727Z             {
2026-06-21T01:36:45.1723860Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1723959Z               "line": 162
2026-06-21T01:36:45.1724065Z             }
2026-06-21T01:36:45.1724161Z           ]
2026-06-21T01:36:45.1724250Z         },
2026-06-21T01:36:45.1724351Z         "int": {
2026-06-21T01:36:45.1724460Z           "complete": false,
2026-06-21T01:36:45.1724570Z           "evidence": []
2026-06-21T01:36:45.1724666Z         },
2026-06-21T01:36:45.1724770Z         "unit": {
2026-06-21T01:36:45.1724879Z           "complete": true,
2026-06-21T01:36:45.1724986Z           "evidence": [
2026-06-21T01:36:45.1725080Z             {
2026-06-21T01:36:45.1725214Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1725325Z               "line": 206
2026-06-21T01:36:45.1725409Z             },
2026-06-21T01:36:45.1725508Z             {
2026-06-21T01:36:45.1725642Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1725750Z               "line": 222
2026-06-21T01:36:45.1725849Z             },
2026-06-21T01:36:45.1725949Z             {
2026-06-21T01:36:45.1726088Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1726192Z               "line": 238
2026-06-21T01:36:45.1726294Z             },
2026-06-21T01:36:45.1726389Z             {
2026-06-21T01:36:45.1726526Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1726632Z               "line": 251
2026-06-21T01:36:45.1726736Z             },
2026-06-21T01:36:45.1726841Z             {
2026-06-21T01:36:45.1726970Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T01:36:45.1727079Z               "line": 258
2026-06-21T01:36:45.1727165Z             }
2026-06-21T01:36:45.1727267Z           ]
2026-06-21T01:36:45.1727361Z         }
2026-06-21T01:36:45.1727466Z       }
2026-06-21T01:36:45.1727572Z     },
2026-06-21T01:36:45.1727670Z     {
2026-06-21T01:36:45.1727790Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T01:36:45.1727989Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T01:36:45.1728100Z       "requiredStages": [
2026-06-21T01:36:45.1728206Z         "impl",
2026-06-21T01:36:45.1728304Z         "unit"
2026-06-21T01:36:45.1728404Z       ],
2026-06-21T01:36:45.1728504Z       "stages": {
2026-06-21T01:36:45.1728615Z         "doc": {
2026-06-21T01:36:45.1728714Z           "complete": false,
2026-06-21T01:36:45.1728824Z           "evidence": []
2026-06-21T01:36:45.1728924Z         },
2026-06-21T01:36:45.1729110Z         "impl": {
2026-06-21T01:36:45.1729224Z           "complete": true,
2026-06-21T01:36:45.1729324Z           "evidence": [
2026-06-21T01:36:45.1729430Z             {
2026-06-21T01:36:45.1729563Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1729672Z               "line": 18
2026-06-21T01:36:45.1729778Z             },
2026-06-21T01:36:45.1729882Z             {
2026-06-21T01:36:45.1730020Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1730117Z               "line": 35
2026-06-21T01:36:45.1730221Z             },
2026-06-21T01:36:45.1730321Z             {
2026-06-21T01:36:45.1730465Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1730673Z               "line": 72
2026-06-21T01:36:45.1730778Z             }
2026-06-21T01:36:45.1730881Z           ]
2026-06-21T01:36:45.1730980Z         },
2026-06-21T01:36:45.1731081Z         "int": {
2026-06-21T01:36:45.1731186Z           "complete": false,
2026-06-21T01:36:45.1731294Z           "evidence": []
2026-06-21T01:36:45.1731396Z         },
2026-06-21T01:36:45.1731496Z         "unit": {
2026-06-21T01:36:45.1731609Z           "complete": true,
2026-06-21T01:36:45.1731706Z           "evidence": [
2026-06-21T01:36:45.1731806Z             {
2026-06-21T01:36:45.1731933Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1732135Z               "line": 239
2026-06-21T01:36:45.1732234Z             },
2026-06-21T01:36:45.1732335Z             {
2026-06-21T01:36:45.1732468Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1732572Z               "line": 256
2026-06-21T01:36:45.1732679Z             },
2026-06-21T01:36:45.1732778Z             {
2026-06-21T01:36:45.1732901Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1733003Z               "line": 265
2026-06-21T01:36:45.1733107Z             }
2026-06-21T01:36:45.1733202Z           ]
2026-06-21T01:36:45.1733304Z         }
2026-06-21T01:36:45.1733408Z       }
2026-06-21T01:36:45.1733506Z     },
2026-06-21T01:36:45.1733606Z     {
2026-06-21T01:36:45.1733720Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T01:36:45.1733895Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T01:36:45.1734011Z       "requiredStages": [
2026-06-21T01:36:45.1734110Z         "impl",
2026-06-21T01:36:45.1734214Z         "unit"
2026-06-21T01:36:45.1734311Z       ],
2026-06-21T01:36:45.1734411Z       "stages": {
2026-06-21T01:36:45.1734510Z         "doc": {
2026-06-21T01:36:45.1734625Z           "complete": false,
2026-06-21T01:36:45.1734730Z           "evidence": []
2026-06-21T01:36:45.1734829Z         },
2026-06-21T01:36:45.1734930Z         "impl": {
2026-06-21T01:36:45.1735039Z           "complete": true,
2026-06-21T01:36:45.1735149Z           "evidence": [
2026-06-21T01:36:45.1735250Z             {
2026-06-21T01:36:45.1735387Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1735497Z               "line": 598
2026-06-21T01:36:45.1735594Z             }
2026-06-21T01:36:45.1735687Z           ]
2026-06-21T01:36:45.1735783Z         },
2026-06-21T01:36:45.1735894Z         "int": {
2026-06-21T01:36:45.1736002Z           "complete": false,
2026-06-21T01:36:45.1736106Z           "evidence": []
2026-06-21T01:36:45.1736211Z         },
2026-06-21T01:36:45.1736301Z         "unit": {
2026-06-21T01:36:45.1736409Z           "complete": true,
2026-06-21T01:36:45.1736514Z           "evidence": [
2026-06-21T01:36:45.1736616Z             {
2026-06-21T01:36:45.1736743Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1736849Z               "line": 967
2026-06-21T01:36:45.1736954Z             }
2026-06-21T01:36:45.1737053Z           ]
2026-06-21T01:36:45.1737154Z         }
2026-06-21T01:36:45.1737249Z       }
2026-06-21T01:36:45.1737353Z     },
2026-06-21T01:36:45.1737440Z     {
2026-06-21T01:36:45.1737549Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T01:36:45.1737754Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T01:36:45.1737864Z       "requiredStages": [
2026-06-21T01:36:45.1737973Z         "impl",
2026-06-21T01:36:45.1738069Z         "unit",
2026-06-21T01:36:45.1738179Z         "int"
2026-06-21T01:36:45.1738274Z       ],
2026-06-21T01:36:45.1738379Z       "stages": {
2026-06-21T01:36:45.1738485Z         "doc": {
2026-06-21T01:36:45.1738598Z           "complete": false,
2026-06-21T01:36:45.1738704Z           "evidence": []
2026-06-21T01:36:45.1738809Z         },
2026-06-21T01:36:45.1738912Z         "impl": {
2026-06-21T01:36:45.1739098Z           "complete": true,
2026-06-21T01:36:45.1739212Z           "evidence": [
2026-06-21T01:36:45.1739312Z             {
2026-06-21T01:36:45.1739536Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.1739641Z               "line": 24
2026-06-21T01:36:45.1739742Z             },
2026-06-21T01:36:45.1739847Z             {
2026-06-21T01:36:45.1739980Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1740081Z               "line": 22
2026-06-21T01:36:45.1740180Z             }
2026-06-21T01:36:45.1740284Z           ]
2026-06-21T01:36:45.1740382Z         },
2026-06-21T01:36:45.1740485Z         "int": {
2026-06-21T01:36:45.1740581Z           "complete": true,
2026-06-21T01:36:45.1740687Z           "evidence": [
2026-06-21T01:36:45.1740790Z             {
2026-06-21T01:36:45.1741044Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:45.1741148Z               "line": 260
2026-06-21T01:36:45.1741251Z             }
2026-06-21T01:36:45.1741352Z           ]
2026-06-21T01:36:45.1741450Z         },
2026-06-21T01:36:45.1741549Z         "unit": {
2026-06-21T01:36:45.1741660Z           "complete": true,
2026-06-21T01:36:45.1741764Z           "evidence": [
2026-06-21T01:36:45.1741864Z             {
2026-06-21T01:36:45.1741994Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.1742098Z               "line": 171
2026-06-21T01:36:45.1742193Z             },
2026-06-21T01:36:45.1742295Z             {
2026-06-21T01:36:45.1742413Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.1742512Z               "line": 200
2026-06-21T01:36:45.1742614Z             },
2026-06-21T01:36:45.1742723Z             {
2026-06-21T01:36:45.1742842Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T01:36:45.1742952Z               "line": 220
2026-06-21T01:36:45.1743047Z             },
2026-06-21T01:36:45.1743151Z             {
2026-06-21T01:36:45.1743286Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1743419Z               "line": 199
2026-06-21T01:36:45.1743559Z             },
2026-06-21T01:36:45.1743653Z             {
2026-06-21T01:36:45.1743791Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1743888Z               "line": 219
2026-06-21T01:36:45.1743986Z             },
2026-06-21T01:36:45.1744090Z             {
2026-06-21T01:36:45.1744219Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1744327Z               "line": 244
2026-06-21T01:36:45.1744426Z             },
2026-06-21T01:36:45.1744532Z             {
2026-06-21T01:36:45.1744660Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1744765Z               "line": 276
2026-06-21T01:36:45.1744861Z             },
2026-06-21T01:36:45.1744961Z             {
2026-06-21T01:36:45.1745099Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1745200Z               "line": 297
2026-06-21T01:36:45.1745304Z             },
2026-06-21T01:36:45.1745404Z             {
2026-06-21T01:36:45.1745524Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T01:36:45.1745629Z               "line": 324
2026-06-21T01:36:45.1745724Z             }
2026-06-21T01:36:45.1745825Z           ]
2026-06-21T01:36:45.1745928Z         }
2026-06-21T01:36:45.1746029Z       }
2026-06-21T01:36:45.1746130Z     },
2026-06-21T01:36:45.1746234Z     {
2026-06-21T01:36:45.1746348Z       "id": "REQ-SEAM-INJECT",
2026-06-21T01:36:45.1746535Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T01:36:45.1746643Z       "requiredStages": [
2026-06-21T01:36:45.1746738Z         "impl",
2026-06-21T01:36:45.1746842Z         "unit"
2026-06-21T01:36:45.1746936Z       ],
2026-06-21T01:36:45.1747046Z       "stages": {
2026-06-21T01:36:45.1747142Z         "doc": {
2026-06-21T01:36:45.1747246Z           "complete": false,
2026-06-21T01:36:45.1747351Z           "evidence": []
2026-06-21T01:36:45.1747452Z         },
2026-06-21T01:36:45.1747556Z         "impl": {
2026-06-21T01:36:45.1747665Z           "complete": true,
2026-06-21T01:36:45.1747776Z           "evidence": [
2026-06-21T01:36:45.1747966Z             {
2026-06-21T01:36:45.1748095Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1748200Z               "line": 19
2026-06-21T01:36:45.1748295Z             },
2026-06-21T01:36:45.1748382Z             {
2026-06-21T01:36:45.1748501Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1748615Z               "line": 111
2026-06-21T01:36:45.1748716Z             }
2026-06-21T01:36:45.1748805Z           ]
2026-06-21T01:36:45.1748905Z         },
2026-06-21T01:36:45.1749068Z         "int": {
2026-06-21T01:36:45.1749168Z           "complete": false,
2026-06-21T01:36:45.1749274Z           "evidence": []
2026-06-21T01:36:45.1749476Z         },
2026-06-21T01:36:45.1749581Z         "unit": {
2026-06-21T01:36:45.1749687Z           "complete": true,
2026-06-21T01:36:45.1749791Z           "evidence": [
2026-06-21T01:36:45.1749886Z             {
2026-06-21T01:36:45.1750021Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1750129Z               "line": 345
2026-06-21T01:36:45.1750230Z             },
2026-06-21T01:36:45.1750335Z             {
2026-06-21T01:36:45.1750463Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1750569Z               "line": 365
2026-06-21T01:36:45.1750669Z             }
2026-06-21T01:36:45.1750773Z           ]
2026-06-21T01:36:45.1750879Z         }
2026-06-21T01:36:45.1750979Z       }
2026-06-21T01:36:45.1751083Z     },
2026-06-21T01:36:45.1751179Z     {
2026-06-21T01:36:45.1751299Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T01:36:45.1751446Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T01:36:45.1751552Z       "requiredStages": [
2026-06-21T01:36:45.1751665Z         "impl",
2026-06-21T01:36:45.1751764Z         "unit"
2026-06-21T01:36:45.1751859Z       ],
2026-06-21T01:36:45.1751959Z       "stages": {
2026-06-21T01:36:45.1752063Z         "doc": {
2026-06-21T01:36:45.1752172Z           "complete": false,
2026-06-21T01:36:45.1752283Z           "evidence": []
2026-06-21T01:36:45.1752382Z         },
2026-06-21T01:36:45.1752487Z         "impl": {
2026-06-21T01:36:45.1752597Z           "complete": true,
2026-06-21T01:36:45.1752696Z           "evidence": [
2026-06-21T01:36:45.1752802Z             {
2026-06-21T01:36:45.1752926Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1753035Z               "line": 18
2026-06-21T01:36:45.1753136Z             },
2026-06-21T01:36:45.1753231Z             {
2026-06-21T01:36:45.1753364Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1753460Z               "line": 431
2026-06-21T01:36:45.1753564Z             }
2026-06-21T01:36:45.1753660Z           ]
2026-06-21T01:36:45.1753765Z         },
2026-06-21T01:36:45.1753870Z         "int": {
2026-06-21T01:36:45.1753979Z           "complete": false,
2026-06-21T01:36:45.1754090Z           "evidence": []
2026-06-21T01:36:45.1754189Z         },
2026-06-21T01:36:45.1754294Z         "unit": {
2026-06-21T01:36:45.1754400Z           "complete": true,
2026-06-21T01:36:45.1754514Z           "evidence": [
2026-06-21T01:36:45.1754608Z             {
2026-06-21T01:36:45.1754736Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1754835Z               "line": 881
2026-06-21T01:36:45.1754935Z             },
2026-06-21T01:36:45.1755039Z             {
2026-06-21T01:36:45.1755169Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1755282Z               "line": 891
2026-06-21T01:36:45.1755388Z             }
2026-06-21T01:36:45.1755488Z           ]
2026-06-21T01:36:45.1755592Z         }
2026-06-21T01:36:45.1758403Z       }
2026-06-21T01:36:45.1758531Z     },
2026-06-21T01:36:45.1758632Z     {
2026-06-21T01:36:45.1758760Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T01:36:45.1758923Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T01:36:45.1759117Z       "requiredStages": [
2026-06-21T01:36:45.1759224Z         "impl",
2026-06-21T01:36:45.1759323Z         "unit",
2026-06-21T01:36:45.1759567Z         "int"
2026-06-21T01:36:45.1759670Z       ],
2026-06-21T01:36:45.1759766Z       "stages": {
2026-06-21T01:36:45.1759868Z         "doc": {
2026-06-21T01:36:45.1759981Z           "complete": false,
2026-06-21T01:36:45.1760094Z           "evidence": []
2026-06-21T01:36:45.1760189Z         },
2026-06-21T01:36:45.1760291Z         "impl": {
2026-06-21T01:36:45.1760394Z           "complete": true,
2026-06-21T01:36:45.1760504Z           "evidence": [
2026-06-21T01:36:45.1760604Z             {
2026-06-21T01:36:45.1760747Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:36:45.1760853Z               "line": 19
2026-06-21T01:36:45.1760948Z             },
2026-06-21T01:36:45.1761148Z             {
2026-06-21T01:36:45.1761281Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T01:36:45.1761386Z               "line": 12
2026-06-21T01:36:45.1761478Z             },
2026-06-21T01:36:45.1761572Z             {
2026-06-21T01:36:45.1761710Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1761812Z               "line": 301
2026-06-21T01:36:45.1761915Z             }
2026-06-21T01:36:45.1762015Z           ]
2026-06-21T01:36:45.1762117Z         },
2026-06-21T01:36:45.1762211Z         "int": {
2026-06-21T01:36:45.1762320Z           "complete": true,
2026-06-21T01:36:45.1762424Z           "evidence": [
2026-06-21T01:36:45.1762524Z             {
2026-06-21T01:36:45.1762665Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:45.1762766Z               "line": 259
2026-06-21T01:36:45.1762867Z             }
2026-06-21T01:36:45.1762961Z           ]
2026-06-21T01:36:45.1763066Z         },
2026-06-21T01:36:45.1763157Z         "unit": {
2026-06-21T01:36:45.1763266Z           "complete": true,
2026-06-21T01:36:45.1763376Z           "evidence": [
2026-06-21T01:36:45.1763467Z             {
2026-06-21T01:36:45.1763600Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:36:45.1763696Z               "line": 195
2026-06-21T01:36:45.1763800Z             },
2026-06-21T01:36:45.1763905Z             {
2026-06-21T01:36:45.1764035Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:36:45.1764139Z               "line": 202
2026-06-21T01:36:45.1764234Z             },
2026-06-21T01:36:45.1764335Z             {
2026-06-21T01:36:45.1764463Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T01:36:45.1764558Z               "line": 225
2026-06-21T01:36:45.1764664Z             },
2026-06-21T01:36:45.1764759Z             {
2026-06-21T01:36:45.1764883Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T01:36:45.1764979Z               "line": 106
2026-06-21T01:36:45.1765069Z             },
2026-06-21T01:36:45.1765173Z             {
2026-06-21T01:36:45.1765301Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T01:36:45.1765409Z               "line": 137
2026-06-21T01:36:45.1765509Z             },
2026-06-21T01:36:45.1765609Z             {
2026-06-21T01:36:45.1765734Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T01:36:45.1765828Z               "line": 161
2026-06-21T01:36:45.1765938Z             }
2026-06-21T01:36:45.1766034Z           ]
2026-06-21T01:36:45.1766138Z         }
2026-06-21T01:36:45.1766234Z       }
2026-06-21T01:36:45.1766334Z     },
2026-06-21T01:36:45.1766429Z     {
2026-06-21T01:36:45.1766544Z       "id": "REQ-SEAM-RESUME",
2026-06-21T01:36:45.1766758Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T01:36:45.1766858Z       "requiredStages": [
2026-06-21T01:36:45.1766959Z         "impl",
2026-06-21T01:36:45.1767053Z         "unit"
2026-06-21T01:36:45.1767158Z       ],
2026-06-21T01:36:45.1767255Z       "stages": {
2026-06-21T01:36:45.1767363Z         "doc": {
2026-06-21T01:36:45.1767473Z           "complete": false,
2026-06-21T01:36:45.1767575Z           "evidence": []
2026-06-21T01:36:45.1767683Z         },
2026-06-21T01:36:45.1767782Z         "impl": {
2026-06-21T01:36:45.1767892Z           "complete": true,
2026-06-21T01:36:45.1768080Z           "evidence": [
2026-06-21T01:36:45.1768176Z             {
2026-06-21T01:36:45.1768310Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:45.1768418Z               "line": 19
2026-06-21T01:36:45.1768520Z             }
2026-06-21T01:36:45.1768610Z           ]
2026-06-21T01:36:45.1768714Z         },
2026-06-21T01:36:45.1768815Z         "int": {
2026-06-21T01:36:45.1768934Z           "complete": false,
2026-06-21T01:36:45.1769125Z           "evidence": []
2026-06-21T01:36:45.1769220Z         },
2026-06-21T01:36:45.1769325Z         "unit": {
2026-06-21T01:36:45.1769430Z           "complete": true,
2026-06-21T01:36:45.1769540Z           "evidence": [
2026-06-21T01:36:45.1769735Z             {
2026-06-21T01:36:45.1769859Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:45.1769969Z               "line": 201
2026-06-21T01:36:45.1770069Z             },
2026-06-21T01:36:45.1770170Z             {
2026-06-21T01:36:45.1770293Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:45.1770394Z               "line": 223
2026-06-21T01:36:45.1770489Z             },
2026-06-21T01:36:45.1770588Z             {
2026-06-21T01:36:45.1770716Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T01:36:45.1770817Z               "line": 244
2026-06-21T01:36:45.1770921Z             }
2026-06-21T01:36:45.1771012Z           ]
2026-06-21T01:36:45.1771113Z         }
2026-06-21T01:36:45.1771208Z       }
2026-06-21T01:36:45.1771307Z     },
2026-06-21T01:36:45.1771403Z     {
2026-06-21T01:36:45.1771518Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T01:36:45.1771636Z       "title": "spawn-session seam",
2026-06-21T01:36:45.1771742Z       "requiredStages": [
2026-06-21T01:36:45.1771846Z         "impl",
2026-06-21T01:36:45.1771946Z         "unit"
2026-06-21T01:36:45.1772052Z       ],
2026-06-21T01:36:45.1772156Z       "stages": {
2026-06-21T01:36:45.1772256Z         "doc": {
2026-06-21T01:36:45.1772362Z           "complete": false,
2026-06-21T01:36:45.1772466Z           "evidence": []
2026-06-21T01:36:45.1772570Z         },
2026-06-21T01:36:45.1772672Z         "impl": {
2026-06-21T01:36:45.1772776Z           "complete": true,
2026-06-21T01:36:45.1772880Z           "evidence": [
2026-06-21T01:36:45.1772985Z             {
2026-06-21T01:36:45.1773126Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1773221Z               "line": 20
2026-06-21T01:36:45.1773316Z             }
2026-06-21T01:36:45.1773418Z           ]
2026-06-21T01:36:45.1773521Z         },
2026-06-21T01:36:45.1773622Z         "int": {
2026-06-21T01:36:45.1773722Z           "complete": false,
2026-06-21T01:36:45.1773831Z           "evidence": []
2026-06-21T01:36:45.1773927Z         },
2026-06-21T01:36:45.1774036Z         "unit": {
2026-06-21T01:36:45.1774140Z           "complete": true,
2026-06-21T01:36:45.1774256Z           "evidence": [
2026-06-21T01:36:45.1774351Z             {
2026-06-21T01:36:45.1774493Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1774609Z               "line": 608
2026-06-21T01:36:45.1774703Z             },
2026-06-21T01:36:45.1774808Z             {
2026-06-21T01:36:45.1774934Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1775046Z               "line": 615
2026-06-21T01:36:45.1775157Z             },
2026-06-21T01:36:45.1775254Z             {
2026-06-21T01:36:45.1775390Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1775481Z               "line": 721
2026-06-21T01:36:45.1775587Z             },
2026-06-21T01:36:45.1775685Z             {
2026-06-21T01:36:45.1775833Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1775938Z               "line": 727
2026-06-21T01:36:45.1776040Z             },
2026-06-21T01:36:45.1776145Z             {
2026-06-21T01:36:45.1776275Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1776388Z               "line": 752
2026-06-21T01:36:45.1776489Z             },
2026-06-21T01:36:45.1776693Z             {
2026-06-21T01:36:45.1776823Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T01:36:45.1776932Z               "line": 789
2026-06-21T01:36:45.1777032Z             }
2026-06-21T01:36:45.1777123Z           ]
2026-06-21T01:36:45.1777228Z         }
2026-06-21T01:36:45.1777327Z       }
2026-06-21T01:36:45.1777428Z     },
2026-06-21T01:36:45.1777533Z     {
2026-06-21T01:36:45.1777642Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T01:36:45.1777830Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T01:36:45.1777933Z       "requiredStages": [
2026-06-21T01:36:45.1778029Z         "impl",
2026-06-21T01:36:45.1778224Z         "unit"
2026-06-21T01:36:45.1778318Z       ],
2026-06-21T01:36:45.1778428Z       "stages": {
2026-06-21T01:36:45.1778522Z         "doc": {
2026-06-21T01:36:45.1778631Z           "complete": false,
2026-06-21T01:36:45.1778736Z           "evidence": []
2026-06-21T01:36:45.1778837Z         },
2026-06-21T01:36:45.1778936Z         "impl": {
2026-06-21T01:36:45.1779147Z           "complete": true,
2026-06-21T01:36:45.1779255Z           "evidence": [
2026-06-21T01:36:45.1779351Z             {
2026-06-21T01:36:45.1779499Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.1779603Z               "line": 28
2026-06-21T01:36:45.1779695Z             },
2026-06-21T01:36:45.1779795Z             {
2026-06-21T01:36:45.1779942Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.1780048Z               "line": 88
2026-06-21T01:36:45.1780142Z             }
2026-06-21T01:36:45.1780238Z           ]
2026-06-21T01:36:45.1780334Z         },
2026-06-21T01:36:45.1780438Z         "int": {
2026-06-21T01:36:45.1780548Z           "complete": false,
2026-06-21T01:36:45.1780659Z           "evidence": []
2026-06-21T01:36:45.1780758Z         },
2026-06-21T01:36:45.1780858Z         "unit": {
2026-06-21T01:36:45.1780968Z           "complete": true,
2026-06-21T01:36:45.1781068Z           "evidence": [
2026-06-21T01:36:45.1781171Z             {
2026-06-21T01:36:45.1781305Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.1781406Z               "line": 326
2026-06-21T01:36:45.1781505Z             },
2026-06-21T01:36:45.1781600Z             {
2026-06-21T01:36:45.1781739Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.1781834Z               "line": 337
2026-06-21T01:36:45.1781940Z             }
2026-06-21T01:36:45.1782035Z           ]
2026-06-21T01:36:45.1782130Z         }
2026-06-21T01:36:45.1782230Z       }
2026-06-21T01:36:45.1782330Z     },
2026-06-21T01:36:45.1782426Z     {
2026-06-21T01:36:45.1782535Z       "id": "REQ-SEC-1",
2026-06-21T01:36:45.1782946Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T01:36:45.1783045Z       "requiredStages": [
2026-06-21T01:36:45.1783155Z         "impl",
2026-06-21T01:36:45.1783261Z         "unit"
2026-06-21T01:36:45.1783360Z       ],
2026-06-21T01:36:45.1783459Z       "stages": {
2026-06-21T01:36:45.1783550Z         "doc": {
2026-06-21T01:36:45.1783658Z           "complete": false,
2026-06-21T01:36:45.1783752Z           "evidence": []
2026-06-21T01:36:45.1783853Z         },
2026-06-21T01:36:45.1783958Z         "impl": {
2026-06-21T01:36:45.1784066Z           "complete": true,
2026-06-21T01:36:45.1784172Z           "evidence": [
2026-06-21T01:36:45.1784272Z             {
2026-06-21T01:36:45.1784415Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.1784516Z               "line": 86
2026-06-21T01:36:45.1784620Z             },
2026-06-21T01:36:45.1784715Z             {
2026-06-21T01:36:45.1784855Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.1784964Z               "line": 116
2026-06-21T01:36:45.1785068Z             },
2026-06-21T01:36:45.1785169Z             {
2026-06-21T01:36:45.1785303Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.1785518Z               "line": 130
2026-06-21T01:36:45.1785621Z             },
2026-06-21T01:36:45.1785722Z             {
2026-06-21T01:36:45.1785856Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1785960Z               "line": 109
2026-06-21T01:36:45.1786061Z             },
2026-06-21T01:36:45.1786162Z             {
2026-06-21T01:36:45.1786302Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1786417Z               "line": 130
2026-06-21T01:36:45.1786507Z             },
2026-06-21T01:36:45.1786610Z             {
2026-06-21T01:36:45.1786739Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1786943Z               "line": 143
2026-06-21T01:36:45.1787039Z             },
2026-06-21T01:36:45.1787135Z             {
2026-06-21T01:36:45.1787272Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1787373Z               "line": 209
2026-06-21T01:36:45.1787478Z             },
2026-06-21T01:36:45.1787582Z             {
2026-06-21T01:36:45.1787717Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1787821Z               "line": 235
2026-06-21T01:36:45.1787911Z             },
2026-06-21T01:36:45.1788017Z             {
2026-06-21T01:36:45.1788140Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1788245Z               "line": 5295
2026-06-21T01:36:45.1788337Z             }
2026-06-21T01:36:45.1788432Z           ]
2026-06-21T01:36:45.1788527Z         },
2026-06-21T01:36:45.1788628Z         "int": {
2026-06-21T01:36:45.1788742Z           "complete": false,
2026-06-21T01:36:45.1788841Z           "evidence": []
2026-06-21T01:36:45.1789027Z         },
2026-06-21T01:36:45.1789124Z         "unit": {
2026-06-21T01:36:45.1789233Z           "complete": true,
2026-06-21T01:36:45.1789339Z           "evidence": [
2026-06-21T01:36:45.1789435Z             {
2026-06-21T01:36:45.1789572Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.1789678Z               "line": 142
2026-06-21T01:36:45.1789782Z             },
2026-06-21T01:36:45.1789872Z             {
2026-06-21T01:36:45.1790002Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.1790102Z               "line": 194
2026-06-21T01:36:45.1790192Z             },
2026-06-21T01:36:45.1790289Z             {
2026-06-21T01:36:45.1790417Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T01:36:45.1790521Z               "line": 235
2026-06-21T01:36:45.1790618Z             },
2026-06-21T01:36:45.1790717Z             {
2026-06-21T01:36:45.1790860Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T01:36:45.1790965Z               "line": 140
2026-06-21T01:36:45.1791070Z             },
2026-06-21T01:36:45.1791165Z             {
2026-06-21T01:36:45.1791299Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1791398Z               "line": 247
2026-06-21T01:36:45.1791505Z             },
2026-06-21T01:36:45.1791609Z             {
2026-06-21T01:36:45.1791727Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1791836Z               "line": 277
2026-06-21T01:36:45.1791933Z             },
2026-06-21T01:36:45.1792032Z             {
2026-06-21T01:36:45.1792156Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1792262Z               "line": 310
2026-06-21T01:36:45.1792361Z             },
2026-06-21T01:36:45.1792456Z             {
2026-06-21T01:36:45.1792590Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1792685Z               "line": 329
2026-06-21T01:36:45.1792781Z             },
2026-06-21T01:36:45.1792876Z             {
2026-06-21T01:36:45.1793009Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1793105Z               "line": 362
2026-06-21T01:36:45.1793196Z             },
2026-06-21T01:36:45.1793300Z             {
2026-06-21T01:36:45.1793425Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T01:36:45.1793633Z               "line": 386
2026-06-21T01:36:45.1793734Z             },
2026-06-21T01:36:45.1793831Z             {
2026-06-21T01:36:45.1793953Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1794057Z               "line": 8296
2026-06-21T01:36:45.1794157Z             }
2026-06-21T01:36:45.1794256Z           ]
2026-06-21T01:36:45.1794355Z         }
2026-06-21T01:36:45.1794442Z       }
2026-06-21T01:36:45.1794543Z     },
2026-06-21T01:36:45.1794646Z     {
2026-06-21T01:36:45.1794756Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T01:36:45.1798578Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T01:36:45.1798825Z       "requiredStages": [
2026-06-21T01:36:45.1798935Z         "impl",
2026-06-21T01:36:45.1799087Z         "unit",
2026-06-21T01:36:45.1799198Z         "int"
2026-06-21T01:36:45.1799298Z       ],
2026-06-21T01:36:45.1799405Z       "stages": {
2026-06-21T01:36:45.1799500Z         "doc": {
2026-06-21T01:36:45.1799606Z           "complete": false,
2026-06-21T01:36:45.1799708Z           "evidence": []
2026-06-21T01:36:45.1799807Z         },
2026-06-21T01:36:45.1799914Z         "impl": {
2026-06-21T01:36:45.1800014Z           "complete": true,
2026-06-21T01:36:45.1800118Z           "evidence": [
2026-06-21T01:36:45.1800215Z             {
2026-06-21T01:36:45.1800356Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.1800456Z               "line": 1066
2026-06-21T01:36:45.1800562Z             },
2026-06-21T01:36:45.1800667Z             {
2026-06-21T01:36:45.1800801Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1800905Z               "line": 1723
2026-06-21T01:36:45.1801005Z             },
2026-06-21T01:36:45.1801110Z             {
2026-06-21T01:36:45.1801234Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1801343Z               "line": 2850
2026-06-21T01:36:45.1801445Z             }
2026-06-21T01:36:45.1801540Z           ]
2026-06-21T01:36:45.1801644Z         },
2026-06-21T01:36:45.1801740Z         "int": {
2026-06-21T01:36:45.1801859Z           "complete": true,
2026-06-21T01:36:45.1801964Z           "evidence": [
2026-06-21T01:36:45.1802060Z             {
2026-06-21T01:36:45.1802202Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.1802311Z               "line": 189
2026-06-21T01:36:45.1802411Z             },
2026-06-21T01:36:45.1802507Z             {
2026-06-21T01:36:45.1802649Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T01:36:45.1802759Z               "line": 507
2026-06-21T01:36:45.1802860Z             }
2026-06-21T01:36:45.1802959Z           ]
2026-06-21T01:36:45.1803060Z         },
2026-06-21T01:36:45.1803165Z         "unit": {
2026-06-21T01:36:45.1803274Z           "complete": true,
2026-06-21T01:36:45.1803384Z           "evidence": [
2026-06-21T01:36:45.1803593Z             {
2026-06-21T01:36:45.1803724Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T01:36:45.1803827Z               "line": 952
2026-06-21T01:36:45.1803927Z             },
2026-06-21T01:36:45.1804038Z             {
2026-06-21T01:36:45.1804160Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1804261Z               "line": 7486
2026-06-21T01:36:45.1804363Z             }
2026-06-21T01:36:45.1804461Z           ]
2026-06-21T01:36:45.1804570Z         }
2026-06-21T01:36:45.1804670Z       }
2026-06-21T01:36:45.1804778Z     },
2026-06-21T01:36:45.1804872Z     {
2026-06-21T01:36:45.1804997Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T01:36:45.1812290Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T01:36:45.1812466Z       "requiredStages": [
2026-06-21T01:36:45.1812571Z         "doc",
2026-06-21T01:36:45.1812678Z         "impl",
2026-06-21T01:36:45.1812772Z         "unit",
2026-06-21T01:36:45.1812876Z         "int"
2026-06-21T01:36:45.1812980Z       ],
2026-06-21T01:36:45.1813077Z       "stages": {
2026-06-21T01:36:45.1813180Z         "doc": {
2026-06-21T01:36:45.1813291Z           "complete": true,
2026-06-21T01:36:45.1813400Z           "evidence": [
2026-06-21T01:36:45.1813500Z             {
2026-06-21T01:36:45.1813663Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T01:36:45.1813768Z               "line": 130
2026-06-21T01:36:45.1813867Z             },
2026-06-21T01:36:45.1813964Z             {
2026-06-21T01:36:45.1814082Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.1814182Z               "line": 96
2026-06-21T01:36:45.1814283Z             }
2026-06-21T01:36:45.1814382Z           ]
2026-06-21T01:36:45.1814473Z         },
2026-06-21T01:36:45.1814574Z         "impl": {
2026-06-21T01:36:45.1814683Z           "complete": true,
2026-06-21T01:36:45.1814908Z           "evidence": [
2026-06-21T01:36:45.1815011Z             {
2026-06-21T01:36:45.1815158Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.1815268Z               "line": 77
2026-06-21T01:36:45.1815371Z             },
2026-06-21T01:36:45.1815470Z             {
2026-06-21T01:36:45.1815610Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.1815714Z               "line": 183
2026-06-21T01:36:45.1815814Z             },
2026-06-21T01:36:45.1815915Z             {
2026-06-21T01:36:45.1816052Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1816158Z               "line": 222
2026-06-21T01:36:45.1816353Z             },
2026-06-21T01:36:45.1816463Z             {
2026-06-21T01:36:45.1816592Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.1816701Z               "line": 71
2026-06-21T01:36:45.1816797Z             },
2026-06-21T01:36:45.1816897Z             {
2026-06-21T01:36:45.1817040Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1817141Z               "line": 176
2026-06-21T01:36:45.1817235Z             }
2026-06-21T01:36:45.1817326Z           ]
2026-06-21T01:36:45.1817427Z         },
2026-06-21T01:36:45.1817532Z         "int": {
2026-06-21T01:36:45.1817635Z           "complete": true,
2026-06-21T01:36:45.1817746Z           "evidence": [
2026-06-21T01:36:45.1817842Z             {
2026-06-21T01:36:45.1817992Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T01:36:45.1818097Z               "line": 25
2026-06-21T01:36:45.1818201Z             }
2026-06-21T01:36:45.1818291Z           ]
2026-06-21T01:36:45.1818390Z         },
2026-06-21T01:36:45.1818496Z         "unit": {
2026-06-21T01:36:45.1818605Z           "complete": true,
2026-06-21T01:36:45.1818705Z           "evidence": [
2026-06-21T01:36:45.1818806Z             {
2026-06-21T01:36:45.1819054Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.1819159Z               "line": 341
2026-06-21T01:36:45.1819263Z             },
2026-06-21T01:36:45.1819363Z             {
2026-06-21T01:36:45.1819502Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T01:36:45.1819606Z               "line": 391
2026-06-21T01:36:45.1819703Z             },
2026-06-21T01:36:45.1819802Z             {
2026-06-21T01:36:45.1819945Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1820046Z               "line": 1244
2026-06-21T01:36:45.1820150Z             },
2026-06-21T01:36:45.1820245Z             {
2026-06-21T01:36:45.1820385Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.1820484Z               "line": 184
2026-06-21T01:36:45.1820583Z             },
2026-06-21T01:36:45.1820683Z             {
2026-06-21T01:36:45.1820819Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.1820924Z               "line": 208
2026-06-21T01:36:45.1821019Z             },
2026-06-21T01:36:45.1821125Z             {
2026-06-21T01:36:45.1821257Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.1821373Z               "line": 236
2026-06-21T01:36:45.1821477Z             },
2026-06-21T01:36:45.1821572Z             {
2026-06-21T01:36:45.1821697Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T01:36:45.1821802Z               "line": 945
2026-06-21T01:36:45.1821906Z             }
2026-06-21T01:36:45.1822002Z           ]
2026-06-21T01:36:45.1822112Z         }
2026-06-21T01:36:45.1822202Z       }
2026-06-21T01:36:45.1822293Z     },
2026-06-21T01:36:45.1822397Z     {
2026-06-21T01:36:45.1822507Z       "id": "REQ-SHELL-1",
2026-06-21T01:36:45.1823431Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T01:36:45.1823647Z       "requiredStages": [
2026-06-21T01:36:45.1823745Z         "impl",
2026-06-21T01:36:45.1823846Z         "unit",
2026-06-21T01:36:45.1823942Z         "int"
2026-06-21T01:36:45.1824046Z       ],
2026-06-21T01:36:45.1824146Z       "stages": {
2026-06-21T01:36:45.1824252Z         "doc": {
2026-06-21T01:36:45.1824365Z           "complete": false,
2026-06-21T01:36:45.1824466Z           "evidence": []
2026-06-21T01:36:45.1824557Z         },
2026-06-21T01:36:45.1824662Z         "impl": {
2026-06-21T01:36:45.1824775Z           "complete": true,
2026-06-21T01:36:45.1824882Z           "evidence": [
2026-06-21T01:36:45.1825081Z             {
2026-06-21T01:36:45.1825220Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1825329Z               "line": 189
2026-06-21T01:36:45.1825429Z             },
2026-06-21T01:36:45.1825525Z             {
2026-06-21T01:36:45.1825667Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1825771Z               "line": 268
2026-06-21T01:36:45.1825875Z             },
2026-06-21T01:36:45.1825969Z             {
2026-06-21T01:36:45.1826102Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1826213Z               "line": 27
2026-06-21T01:36:45.1826317Z             },
2026-06-21T01:36:45.1826417Z             {
2026-06-21T01:36:45.1826556Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1826665Z               "line": 52
2026-06-21T01:36:45.1826771Z             },
2026-06-21T01:36:45.1826871Z             {
2026-06-21T01:36:45.1827008Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1827110Z               "line": 144
2026-06-21T01:36:45.1827214Z             },
2026-06-21T01:36:45.1827313Z             {
2026-06-21T01:36:45.1827448Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1827547Z               "line": 176
2026-06-21T01:36:45.1827652Z             },
2026-06-21T01:36:45.1827758Z             {
2026-06-21T01:36:45.1827891Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1828001Z               "line": 22
2026-06-21T01:36:45.1828101Z             },
2026-06-21T01:36:45.1828200Z             {
2026-06-21T01:36:45.1828345Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1828435Z               "line": 65
2026-06-21T01:36:45.1828524Z             },
2026-06-21T01:36:45.1828614Z             {
2026-06-21T01:36:45.1828752Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1828851Z               "line": 76
2026-06-21T01:36:45.1829037Z             },
2026-06-21T01:36:45.1829137Z             {
2026-06-21T01:36:45.1829265Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1829371Z               "line": 151
2026-06-21T01:36:45.1829470Z             },
2026-06-21T01:36:45.1829570Z             {
2026-06-21T01:36:45.1829709Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1829813Z               "line": 210
2026-06-21T01:36:45.1829919Z             },
2026-06-21T01:36:45.1830005Z             {
2026-06-21T01:36:45.1830143Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1830243Z               "line": 259
2026-06-21T01:36:45.1830344Z             },
2026-06-21T01:36:45.1830448Z             {
2026-06-21T01:36:45.1830573Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1830677Z               "line": 281
2026-06-21T01:36:45.1830777Z             },
2026-06-21T01:36:45.1830883Z             {
2026-06-21T01:36:45.1831020Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1831129Z               "line": 294
2026-06-21T01:36:45.1831234Z             },
2026-06-21T01:36:45.1831319Z             {
2026-06-21T01:36:45.1831445Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.1831546Z               "line": 217
2026-06-21T01:36:45.1831751Z             },
2026-06-21T01:36:45.1831846Z             {
2026-06-21T01:36:45.1831975Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.1832079Z               "line": 233
2026-06-21T01:36:45.1832176Z             },
2026-06-21T01:36:45.1832276Z             {
2026-06-21T01:36:45.1832408Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:45.1832519Z               "line": 41
2026-06-21T01:36:45.1832619Z             },
2026-06-21T01:36:45.1832723Z             {
2026-06-21T01:36:45.1832868Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:45.1832962Z               "line": 222
2026-06-21T01:36:45.1833163Z             },
2026-06-21T01:36:45.1833263Z             {
2026-06-21T01:36:45.1833391Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T01:36:45.1833493Z               "line": 173
2026-06-21T01:36:45.1833591Z             },
2026-06-21T01:36:45.1833691Z             {
2026-06-21T01:36:45.1833817Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1833925Z               "line": 354
2026-06-21T01:36:45.1834024Z             },
2026-06-21T01:36:45.1834125Z             {
2026-06-21T01:36:45.1834240Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1834334Z               "line": 419
2026-06-21T01:36:45.1834435Z             },
2026-06-21T01:36:45.1834530Z             {
2026-06-21T01:36:45.1834673Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1834769Z               "line": 333
2026-06-21T01:36:45.1834874Z             },
2026-06-21T01:36:45.1834982Z             {
2026-06-21T01:36:45.1835103Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1835212Z               "line": 6320
2026-06-21T01:36:45.1835312Z             },
2026-06-21T01:36:45.1835418Z             {
2026-06-21T01:36:45.1835536Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1835631Z               "line": 6470
2026-06-21T01:36:45.1835728Z             },
2026-06-21T01:36:45.1835827Z             {
2026-06-21T01:36:45.1835946Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1836052Z               "line": 6646
2026-06-21T01:36:45.1836155Z             }
2026-06-21T01:36:45.1836250Z           ]
2026-06-21T01:36:45.1836355Z         },
2026-06-21T01:36:45.1836459Z         "int": {
2026-06-21T01:36:45.1836563Z           "complete": true,
2026-06-21T01:36:45.1836667Z           "evidence": [
2026-06-21T01:36:45.1836769Z             {
2026-06-21T01:36:45.1836920Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1837021Z               "line": 713
2026-06-21T01:36:45.1837126Z             },
2026-06-21T01:36:45.1837235Z             {
2026-06-21T01:36:45.1837364Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T01:36:45.1837473Z               "line": 8
2026-06-21T01:36:45.1837573Z             },
2026-06-21T01:36:45.1837660Z             {
2026-06-21T01:36:45.1837788Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T01:36:45.1837897Z               "line": 49
2026-06-21T01:36:45.1837999Z             },
2026-06-21T01:36:45.1838094Z             {
2026-06-21T01:36:45.1838237Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1838342Z               "line": 778
2026-06-21T01:36:45.1838437Z             },
2026-06-21T01:36:45.1838527Z             {
2026-06-21T01:36:45.1838670Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1838775Z               "line": 1213
2026-06-21T01:36:45.1838877Z             },
2026-06-21T01:36:45.1839065Z             {
2026-06-21T01:36:45.1839203Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T01:36:45.1839312Z               "line": 17
2026-06-21T01:36:45.1839411Z             },
2026-06-21T01:36:45.1839511Z             {
2026-06-21T01:36:45.1839645Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T01:36:45.1839744Z               "line": 14
2026-06-21T01:36:45.1839945Z             }
2026-06-21T01:36:45.1840044Z           ]
2026-06-21T01:36:45.1840145Z         },
2026-06-21T01:36:45.1840250Z         "unit": {
2026-06-21T01:36:45.1840364Z           "complete": true,
2026-06-21T01:36:45.1840470Z           "evidence": [
2026-06-21T01:36:45.1840570Z             {
2026-06-21T01:36:45.1840703Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1840808Z               "line": 246
2026-06-21T01:36:45.1840913Z             },
2026-06-21T01:36:45.1841008Z             {
2026-06-21T01:36:45.1841138Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1841242Z               "line": 279
2026-06-21T01:36:45.1841424Z             },
2026-06-21T01:36:45.1841533Z             {
2026-06-21T01:36:45.1841656Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1841774Z               "line": 319
2026-06-21T01:36:45.1841874Z             },
2026-06-21T01:36:45.1841978Z             {
2026-06-21T01:36:45.1842121Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1842226Z               "line": 599
2026-06-21T01:36:45.1842325Z             },
2026-06-21T01:36:45.1842431Z             {
2026-06-21T01:36:45.1842560Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1842663Z               "line": 672
2026-06-21T01:36:45.1845286Z             },
2026-06-21T01:36:45.1845419Z             {
2026-06-21T01:36:45.1845567Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1845677Z               "line": 816
2026-06-21T01:36:45.1845777Z             },
2026-06-21T01:36:45.1845877Z             {
2026-06-21T01:36:45.1846026Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.1846121Z               "line": 595
2026-06-21T01:36:45.1846225Z             },
2026-06-21T01:36:45.1846340Z             {
2026-06-21T01:36:45.1846496Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T01:36:45.1846598Z               "line": 399
2026-06-21T01:36:45.1846711Z             },
2026-06-21T01:36:45.1846811Z             {
2026-06-21T01:36:45.1846934Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1847042Z               "line": 8976
2026-06-21T01:36:45.1847142Z             },
2026-06-21T01:36:45.1847237Z             {
2026-06-21T01:36:45.1847357Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1847466Z               "line": 9300
2026-06-21T01:36:45.1847561Z             },
2026-06-21T01:36:45.1847657Z             {
2026-06-21T01:36:45.1847780Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1847877Z               "line": 9717
2026-06-21T01:36:45.1847976Z             }
2026-06-21T01:36:45.1848061Z           ]
2026-06-21T01:36:45.1848163Z         }
2026-06-21T01:36:45.1848254Z       }
2026-06-21T01:36:45.1848358Z     },
2026-06-21T01:36:45.1848462Z     {
2026-06-21T01:36:45.1848564Z       "id": "REQ-SHELL-2",
2026-06-21T01:36:45.1850181Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T01:36:45.1850309Z       "requiredStages": [
2026-06-21T01:36:45.1850400Z         "impl",
2026-06-21T01:36:45.1850505Z         "unit",
2026-06-21T01:36:45.1850604Z         "int"
2026-06-21T01:36:45.1850705Z       ],
2026-06-21T01:36:45.1850810Z       "stages": {
2026-06-21T01:36:45.1850919Z         "doc": {
2026-06-21T01:36:45.1851034Z           "complete": false,
2026-06-21T01:36:45.1851135Z           "evidence": []
2026-06-21T01:36:45.1851239Z         },
2026-06-21T01:36:45.1851339Z         "impl": {
2026-06-21T01:36:45.1851454Z           "complete": true,
2026-06-21T01:36:45.1851722Z           "evidence": [
2026-06-21T01:36:45.1851825Z             {
2026-06-21T01:36:45.1851979Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.1852084Z               "line": 217
2026-06-21T01:36:45.1852173Z             },
2026-06-21T01:36:45.1852267Z             {
2026-06-21T01:36:45.1852415Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.1852509Z               "line": 403
2026-06-21T01:36:45.1852613Z             },
2026-06-21T01:36:45.1852705Z             {
2026-06-21T01:36:45.1852838Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T01:36:45.1852948Z               "line": 250
2026-06-21T01:36:45.1853139Z             },
2026-06-21T01:36:45.1853243Z             {
2026-06-21T01:36:45.1853382Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.1853482Z               "line": 403
2026-06-21T01:36:45.1853572Z             },
2026-06-21T01:36:45.1853668Z             {
2026-06-21T01:36:45.1853801Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1853906Z               "line": 30
2026-06-21T01:36:45.1854011Z             },
2026-06-21T01:36:45.1854102Z             {
2026-06-21T01:36:45.1854216Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1854326Z               "line": 409
2026-06-21T01:36:45.1854421Z             },
2026-06-21T01:36:45.1854521Z             {
2026-06-21T01:36:45.1854655Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1854764Z               "line": 445
2026-06-21T01:36:45.1854866Z             },
2026-06-21T01:36:45.1854961Z             {
2026-06-21T01:36:45.1855097Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1855192Z               "line": 660
2026-06-21T01:36:45.1855298Z             },
2026-06-21T01:36:45.1855393Z             {
2026-06-21T01:36:45.1855521Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.1855623Z               "line": 348
2026-06-21T01:36:45.1855726Z             },
2026-06-21T01:36:45.1855827Z             {
2026-06-21T01:36:45.1855951Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1856060Z               "line": 115
2026-06-21T01:36:45.1856155Z             },
2026-06-21T01:36:45.1856261Z             {
2026-06-21T01:36:45.1856389Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1856485Z               "line": 120
2026-06-21T01:36:45.1856595Z             },
2026-06-21T01:36:45.1856699Z             {
2026-06-21T01:36:45.1856834Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1856943Z               "line": 374
2026-06-21T01:36:45.1857038Z             },
2026-06-21T01:36:45.1857139Z             {
2026-06-21T01:36:45.1857276Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1857385Z               "line": 500
2026-06-21T01:36:45.1857485Z             },
2026-06-21T01:36:45.1857570Z             {
2026-06-21T01:36:45.1857702Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1857812Z               "line": 24
2026-06-21T01:36:45.1857922Z             },
2026-06-21T01:36:45.1858016Z             {
2026-06-21T01:36:45.1858151Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1858251Z               "line": 76
2026-06-21T01:36:45.1858355Z             },
2026-06-21T01:36:45.1858451Z             {
2026-06-21T01:36:45.1858580Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1858684Z               "line": 154
2026-06-21T01:36:45.1858785Z             },
2026-06-21T01:36:45.1858890Z             {
2026-06-21T01:36:45.1859085Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1859189Z               "line": 177
2026-06-21T01:36:45.1859280Z             },
2026-06-21T01:36:45.1859386Z             {
2026-06-21T01:36:45.1859523Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1859720Z               "line": 273
2026-06-21T01:36:45.1859824Z             },
2026-06-21T01:36:45.1859919Z             {
2026-06-21T01:36:45.1860054Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1860153Z               "line": 456
2026-06-21T01:36:45.1860252Z             },
2026-06-21T01:36:45.1860352Z             {
2026-06-21T01:36:45.1860484Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1860588Z               "line": 538
2026-06-21T01:36:45.1860684Z             },
2026-06-21T01:36:45.1860780Z             {
2026-06-21T01:36:45.1860917Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T01:36:45.1861104Z               "line": 27
2026-06-21T01:36:45.1861203Z             },
2026-06-21T01:36:45.1861299Z             {
2026-06-21T01:36:45.1861447Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T01:36:45.1861546Z               "line": 48
2026-06-21T01:36:45.1861652Z             },
2026-06-21T01:36:45.1861751Z             {
2026-06-21T01:36:45.1861880Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1861987Z               "line": 517
2026-06-21T01:36:45.1862080Z             },
2026-06-21T01:36:45.1862181Z             {
2026-06-21T01:36:45.1862306Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1862409Z               "line": 1921
2026-06-21T01:36:45.1862510Z             },
2026-06-21T01:36:45.1862611Z             {
2026-06-21T01:36:45.1862733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1862837Z               "line": 6334
2026-06-21T01:36:45.1862943Z             },
2026-06-21T01:36:45.1863045Z             {
2026-06-21T01:36:45.1863164Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1863275Z               "line": 6395
2026-06-21T01:36:45.1863374Z             },
2026-06-21T01:36:45.1863478Z             {
2026-06-21T01:36:45.1863590Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1863699Z               "line": 6423
2026-06-21T01:36:45.1863789Z             },
2026-06-21T01:36:45.1863895Z             {
2026-06-21T01:36:45.1864009Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1864104Z               "line": 6477
2026-06-21T01:36:45.1864205Z             },
2026-06-21T01:36:45.1864304Z             {
2026-06-21T01:36:45.1864419Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1864515Z               "line": 6732
2026-06-21T01:36:45.1864605Z             },
2026-06-21T01:36:45.1864700Z             {
2026-06-21T01:36:45.1864810Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1864924Z               "line": 6792
2026-06-21T01:36:45.1865015Z             },
2026-06-21T01:36:45.1865116Z             {
2026-06-21T01:36:45.1865239Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.1865334Z               "line": 298
2026-06-21T01:36:45.1865440Z             },
2026-06-21T01:36:45.1865540Z             {
2026-06-21T01:36:45.1865662Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.1865766Z               "line": 339
2026-06-21T01:36:45.1865868Z             }
2026-06-21T01:36:45.1865967Z           ]
2026-06-21T01:36:45.1866072Z         },
2026-06-21T01:36:45.1866173Z         "int": {
2026-06-21T01:36:45.1866272Z           "complete": true,
2026-06-21T01:36:45.1866372Z           "evidence": [
2026-06-21T01:36:45.1866468Z             {
2026-06-21T01:36:45.1866606Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.1866711Z               "line": 706
2026-06-21T01:36:45.1866802Z             },
2026-06-21T01:36:45.1866907Z             {
2026-06-21T01:36:45.1867040Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1867150Z               "line": 778
2026-06-21T01:36:45.1867245Z             },
2026-06-21T01:36:45.1867341Z             {
2026-06-21T01:36:45.1867470Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1867574Z               "line": 1213
2026-06-21T01:36:45.1867756Z             },
2026-06-21T01:36:45.1867855Z             {
2026-06-21T01:36:45.1868002Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T01:36:45.1868097Z               "line": 18
2026-06-21T01:36:45.1868200Z             }
2026-06-21T01:36:45.1868305Z           ]
2026-06-21T01:36:45.1868406Z         },
2026-06-21T01:36:45.1868510Z         "unit": {
2026-06-21T01:36:45.1868615Z           "complete": true,
2026-06-21T01:36:45.1868721Z           "evidence": [
2026-06-21T01:36:45.1868811Z             {
2026-06-21T01:36:45.1869035Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1869249Z               "line": 744
2026-06-21T01:36:45.1869345Z             },
2026-06-21T01:36:45.1869445Z             {
2026-06-21T01:36:45.1869578Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T01:36:45.1869693Z               "line": 796
2026-06-21T01:36:45.1869788Z             },
2026-06-21T01:36:45.1869893Z             {
2026-06-21T01:36:45.1870036Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1870141Z               "line": 705
2026-06-21T01:36:45.1870242Z             },
2026-06-21T01:36:45.1870342Z             {
2026-06-21T01:36:45.1870479Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1870581Z               "line": 754
2026-06-21T01:36:45.1870680Z             },
2026-06-21T01:36:45.1870779Z             {
2026-06-21T01:36:45.1870903Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1871002Z               "line": 778
2026-06-21T01:36:45.1871100Z             },
2026-06-21T01:36:45.1871196Z             {
2026-06-21T01:36:45.1871335Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1871439Z               "line": 603
2026-06-21T01:36:45.1871535Z             },
2026-06-21T01:36:45.1871626Z             {
2026-06-21T01:36:45.1871763Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1871864Z               "line": 624
2026-06-21T01:36:45.1871959Z             },
2026-06-21T01:36:45.1872054Z             {
2026-06-21T01:36:45.1872193Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1872297Z               "line": 660
2026-06-21T01:36:45.1872392Z             },
2026-06-21T01:36:45.1872494Z             {
2026-06-21T01:36:45.1872621Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1872726Z               "line": 714
2026-06-21T01:36:45.1872832Z             },
2026-06-21T01:36:45.1872927Z             {
2026-06-21T01:36:45.1873056Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1873152Z               "line": 732
2026-06-21T01:36:45.1873251Z             },
2026-06-21T01:36:45.1873350Z             {
2026-06-21T01:36:45.1873474Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1873583Z               "line": 766
2026-06-21T01:36:45.1873681Z             },
2026-06-21T01:36:45.1873786Z             {
2026-06-21T01:36:45.1873916Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T01:36:45.1874020Z               "line": 841
2026-06-21T01:36:45.1874121Z             },
2026-06-21T01:36:45.1874216Z             {
2026-06-21T01:36:45.1874363Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T01:36:45.1874470Z               "line": 85
2026-06-21T01:36:45.1874578Z             },
2026-06-21T01:36:45.1874678Z             {
2026-06-21T01:36:45.1874798Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1874903Z               "line": 8044
2026-06-21T01:36:45.1875007Z             },
2026-06-21T01:36:45.1875113Z             {
2026-06-21T01:36:45.1875227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1875331Z               "line": 9054
2026-06-21T01:36:45.1875428Z             },
2026-06-21T01:36:45.1875522Z             {
2026-06-21T01:36:45.1875632Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1875846Z               "line": 9124
2026-06-21T01:36:45.1875981Z             },
2026-06-21T01:36:45.1876077Z             {
2026-06-21T01:36:45.1876198Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1876293Z               "line": 9162
2026-06-21T01:36:45.1876389Z             }
2026-06-21T01:36:45.1876485Z           ]
2026-06-21T01:36:45.1876584Z         }
2026-06-21T01:36:45.1876690Z       }
2026-06-21T01:36:45.1876776Z     },
2026-06-21T01:36:45.1876880Z     {
2026-06-21T01:36:45.1876976Z       "id": "REQ-SHELL-3",
2026-06-21T01:36:45.1878870Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T01:36:45.1879146Z       "requiredStages": [
2026-06-21T01:36:45.1879242Z         "impl",
2026-06-21T01:36:45.1879347Z         "unit",
2026-06-21T01:36:45.1879442Z         "int"
2026-06-21T01:36:45.1879543Z       ],
2026-06-21T01:36:45.1879638Z       "stages": {
2026-06-21T01:36:45.1879723Z         "doc": {
2026-06-21T01:36:45.1879838Z           "complete": false,
2026-06-21T01:36:45.1879938Z           "evidence": []
2026-06-21T01:36:45.1880038Z         },
2026-06-21T01:36:45.1880143Z         "impl": {
2026-06-21T01:36:45.1880253Z           "complete": true,
2026-06-21T01:36:45.1880358Z           "evidence": [
2026-06-21T01:36:45.1880453Z             {
2026-06-21T01:36:45.1880587Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.1880682Z               "line": 229
2026-06-21T01:36:45.1880787Z             },
2026-06-21T01:36:45.1880883Z             {
2026-06-21T01:36:45.1881030Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1881141Z               "line": 36
2026-06-21T01:36:45.1881226Z             },
2026-06-21T01:36:45.1881320Z             {
2026-06-21T01:36:45.1881448Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1881557Z               "line": 137
2026-06-21T01:36:45.1881656Z             },
2026-06-21T01:36:45.1881756Z             {
2026-06-21T01:36:45.1881895Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1881994Z               "line": 153
2026-06-21T01:36:45.1882100Z             },
2026-06-21T01:36:45.1882195Z             {
2026-06-21T01:36:45.1882332Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1882434Z               "line": 165
2026-06-21T01:36:45.1882538Z             },
2026-06-21T01:36:45.1882633Z             {
2026-06-21T01:36:45.1882763Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1882872Z               "line": 242
2026-06-21T01:36:45.1882962Z             },
2026-06-21T01:36:45.1883049Z             {
2026-06-21T01:36:45.1883182Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1883282Z               "line": 267
2026-06-21T01:36:45.1883383Z             },
2026-06-21T01:36:45.1883469Z             {
2026-06-21T01:36:45.1883601Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1883708Z               "line": 293
2026-06-21T01:36:45.1883812Z             },
2026-06-21T01:36:45.1883901Z             {
2026-06-21T01:36:45.1884030Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:36:45.1884143Z               "line": 51
2026-06-21T01:36:45.1884241Z             },
2026-06-21T01:36:45.1884342Z             {
2026-06-21T01:36:45.1884477Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1884585Z               "line": 333
2026-06-21T01:36:45.1884786Z             },
2026-06-21T01:36:45.1884885Z             {
2026-06-21T01:36:45.1885020Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1885115Z               "line": 373
2026-06-21T01:36:45.1885214Z             },
2026-06-21T01:36:45.1885306Z             {
2026-06-21T01:36:45.1885443Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1885543Z               "line": 602
2026-06-21T01:36:45.1885645Z             },
2026-06-21T01:36:45.1885743Z             {
2026-06-21T01:36:45.1885882Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1885988Z               "line": 132
2026-06-21T01:36:45.1886178Z             },
2026-06-21T01:36:45.1886274Z             {
2026-06-21T01:36:45.1886415Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1886521Z               "line": 448
2026-06-21T01:36:45.1886623Z             },
2026-06-21T01:36:45.1886721Z             {
2026-06-21T01:36:45.1886858Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T01:36:45.1886959Z               "line": 74
2026-06-21T01:36:45.1887063Z             },
2026-06-21T01:36:45.1887158Z             {
2026-06-21T01:36:45.1887279Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1887388Z               "line": 605
2026-06-21T01:36:45.1887487Z             },
2026-06-21T01:36:45.1887584Z             {
2026-06-21T01:36:45.1887717Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1887822Z               "line": 396
2026-06-21T01:36:45.1887927Z             },
2026-06-21T01:36:45.1888022Z             {
2026-06-21T01:36:45.1888146Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1888251Z               "line": 6518
2026-06-21T01:36:45.1888346Z             }
2026-06-21T01:36:45.1888446Z           ]
2026-06-21T01:36:45.1888548Z         },
2026-06-21T01:36:45.1888656Z         "int": {
2026-06-21T01:36:45.1888756Z           "complete": true,
2026-06-21T01:36:45.1888868Z           "evidence": [
2026-06-21T01:36:45.1889051Z             {
2026-06-21T01:36:45.1889194Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1889283Z               "line": 1262
2026-06-21T01:36:45.1889386Z             },
2026-06-21T01:36:45.1889488Z             {
2026-06-21T01:36:45.1889616Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T01:36:45.1889711Z               "line": 17
2026-06-21T01:36:45.1889807Z             }
2026-06-21T01:36:45.1889903Z           ]
2026-06-21T01:36:45.1889997Z         },
2026-06-21T01:36:45.1890103Z         "unit": {
2026-06-21T01:36:45.1890208Z           "complete": true,
2026-06-21T01:36:45.1890317Z           "evidence": [
2026-06-21T01:36:45.1890418Z             {
2026-06-21T01:36:45.1890546Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1890655Z               "line": 311
2026-06-21T01:36:45.1890752Z             },
2026-06-21T01:36:45.1890856Z             {
2026-06-21T01:36:45.1890993Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1891095Z               "line": 325
2026-06-21T01:36:45.1891194Z             },
2026-06-21T01:36:45.1891295Z             {
2026-06-21T01:36:45.1891429Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1891533Z               "line": 343
2026-06-21T01:36:45.1891633Z             },
2026-06-21T01:36:45.1891739Z             {
2026-06-21T01:36:45.1891866Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1891975Z               "line": 364
2026-06-21T01:36:45.1892070Z             },
2026-06-21T01:36:45.1892173Z             {
2026-06-21T01:36:45.1892316Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T01:36:45.1892422Z               "line": 376
2026-06-21T01:36:45.1892526Z             },
2026-06-21T01:36:45.1892626Z             {
2026-06-21T01:36:45.1892756Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1892960Z               "line": 897
2026-06-21T01:36:45.1893070Z             },
2026-06-21T01:36:45.1893170Z             {
2026-06-21T01:36:45.1893304Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1893408Z               "line": 957
2026-06-21T01:36:45.1893504Z             },
2026-06-21T01:36:45.1893609Z             {
2026-06-21T01:36:45.1893737Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T01:36:45.1893847Z               "line": 338
2026-06-21T01:36:45.1893949Z             },
2026-06-21T01:36:45.1894043Z             {
2026-06-21T01:36:45.1894166Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1894367Z               "line": 769
2026-06-21T01:36:45.1894470Z             },
2026-06-21T01:36:45.1894556Z             {
2026-06-21T01:36:45.1894689Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1894797Z               "line": 8836
2026-06-21T01:36:45.1894893Z             }
2026-06-21T01:36:45.1894998Z           ]
2026-06-21T01:36:45.1895102Z         }
2026-06-21T01:36:45.1895202Z       }
2026-06-21T01:36:45.1895294Z     },
2026-06-21T01:36:45.1895389Z     {
2026-06-21T01:36:45.1895503Z       "id": "REQ-SHELL-4",
2026-06-21T01:36:45.1897357Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T01:36:45.1897471Z       "requiredStages": [
2026-06-21T01:36:45.1897573Z         "doc",
2026-06-21T01:36:45.1897661Z         "impl",
2026-06-21T01:36:45.1897762Z         "unit",
2026-06-21T01:36:45.1897853Z         "int"
2026-06-21T01:36:45.1897957Z       ],
2026-06-21T01:36:45.1898057Z       "stages": {
2026-06-21T01:36:45.1898159Z         "doc": {
2026-06-21T01:36:45.1898263Z           "complete": true,
2026-06-21T01:36:45.1898367Z           "evidence": [
2026-06-21T01:36:45.1898474Z             {
2026-06-21T01:36:45.1898578Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1898682Z               "line": 281
2026-06-21T01:36:45.1898779Z             },
2026-06-21T01:36:45.1898873Z             {
2026-06-21T01:36:45.1899192Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T01:36:45.1899297Z               "line": 88
2026-06-21T01:36:45.1899399Z             }
2026-06-21T01:36:45.1899497Z           ]
2026-06-21T01:36:45.1899588Z         },
2026-06-21T01:36:45.1899678Z         "impl": {
2026-06-21T01:36:45.1899787Z           "complete": true,
2026-06-21T01:36:45.1899890Z           "evidence": [
2026-06-21T01:36:45.1899995Z             {
2026-06-21T01:36:45.1900134Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.1900233Z               "line": 243
2026-06-21T01:36:45.1900333Z             },
2026-06-21T01:36:45.1900425Z             {
2026-06-21T01:36:45.1900557Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T01:36:45.1900663Z               "line": 61
2026-06-21T01:36:45.1900768Z             },
2026-06-21T01:36:45.1900858Z             {
2026-06-21T01:36:45.1900988Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1901087Z               "line": 218
2026-06-21T01:36:45.1901173Z             },
2026-06-21T01:36:45.1901283Z             {
2026-06-21T01:36:45.1901411Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1901516Z               "line": 245
2026-06-21T01:36:45.1901617Z             },
2026-06-21T01:36:45.1901712Z             {
2026-06-21T01:36:45.1901850Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1902055Z               "line": 566
2026-06-21T01:36:45.1902150Z             },
2026-06-21T01:36:45.1902246Z             {
2026-06-21T01:36:45.1902374Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1902478Z               "line": 1141
2026-06-21T01:36:45.1902578Z             },
2026-06-21T01:36:45.1902682Z             {
2026-06-21T01:36:45.1902814Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1902920Z               "line": 1153
2026-06-21T01:36:45.1903025Z             },
2026-06-21T01:36:45.1903124Z             {
2026-06-21T01:36:45.1903258Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1903453Z               "line": 1194
2026-06-21T01:36:45.1903555Z             },
2026-06-21T01:36:45.1903649Z             {
2026-06-21T01:36:45.1903782Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1903884Z               "line": 456
2026-06-21T01:36:45.1903983Z             },
2026-06-21T01:36:45.1904092Z             {
2026-06-21T01:36:45.1904222Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1904326Z               "line": 44
2026-06-21T01:36:45.1904431Z             },
2026-06-21T01:36:45.1904528Z             {
2026-06-21T01:36:45.1904664Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1904765Z               "line": 208
2026-06-21T01:36:45.1904866Z             },
2026-06-21T01:36:45.1904965Z             {
2026-06-21T01:36:45.1905092Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1905202Z               "line": 227
2026-06-21T01:36:45.1905291Z             },
2026-06-21T01:36:45.1905400Z             {
2026-06-21T01:36:45.1905530Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1905639Z               "line": 253
2026-06-21T01:36:45.1905724Z             },
2026-06-21T01:36:45.1905825Z             {
2026-06-21T01:36:45.1905958Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1906063Z               "line": 272
2026-06-21T01:36:45.1906154Z             },
2026-06-21T01:36:45.1906254Z             {
2026-06-21T01:36:45.1906392Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1906493Z               "line": 392
2026-06-21T01:36:45.1906588Z             },
2026-06-21T01:36:45.1906683Z             {
2026-06-21T01:36:45.1906817Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1906927Z               "line": 421
2026-06-21T01:36:45.1907026Z             },
2026-06-21T01:36:45.1907127Z             {
2026-06-21T01:36:45.1907256Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1907366Z               "line": 439
2026-06-21T01:36:45.1907470Z             },
2026-06-21T01:36:45.1907570Z             {
2026-06-21T01:36:45.1907700Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1907804Z               "line": 458
2026-06-21T01:36:45.1907912Z             },
2026-06-21T01:36:45.1908003Z             {
2026-06-21T01:36:45.1908128Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1908231Z               "line": 486
2026-06-21T01:36:45.1908327Z             },
2026-06-21T01:36:45.1908432Z             {
2026-06-21T01:36:45.1908560Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1908671Z               "line": 624
2026-06-21T01:36:45.1908770Z             },
2026-06-21T01:36:45.1908865Z             {
2026-06-21T01:36:45.1909081Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1909180Z               "line": 829
2026-06-21T01:36:45.1909291Z             },
2026-06-21T01:36:45.1909377Z             {
2026-06-21T01:36:45.1909514Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1909620Z               "line": 435
2026-06-21T01:36:45.1909720Z             },
2026-06-21T01:36:45.1909819Z             {
2026-06-21T01:36:45.1909935Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1910143Z               "line": 6574
2026-06-21T01:36:45.1910238Z             }
2026-06-21T01:36:45.1910338Z           ]
2026-06-21T01:36:45.1910445Z         },
2026-06-21T01:36:45.1910535Z         "int": {
2026-06-21T01:36:45.1910651Z           "complete": true,
2026-06-21T01:36:45.1910755Z           "evidence": [
2026-06-21T01:36:45.1910855Z             {
2026-06-21T01:36:45.1910985Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T01:36:45.1911089Z               "line": 18
2026-06-21T01:36:45.1911194Z             }
2026-06-21T01:36:45.1911290Z           ]
2026-06-21T01:36:45.1911390Z         },
2026-06-21T01:36:45.1911605Z         "unit": {
2026-06-21T01:36:45.1911714Z           "complete": true,
2026-06-21T01:36:45.1911818Z           "evidence": [
2026-06-21T01:36:45.1911915Z             {
2026-06-21T01:36:45.1912057Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1912158Z               "line": 1391
2026-06-21T01:36:45.1912253Z             },
2026-06-21T01:36:45.1912348Z             {
2026-06-21T01:36:45.1912473Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1912582Z               "line": 1420
2026-06-21T01:36:45.1912677Z             },
2026-06-21T01:36:45.1912773Z             {
2026-06-21T01:36:45.1912906Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1913010Z               "line": 504
2026-06-21T01:36:45.1913105Z             },
2026-06-21T01:36:45.1913210Z             {
2026-06-21T01:36:45.1913332Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1913432Z               "line": 514
2026-06-21T01:36:45.1913542Z             },
2026-06-21T01:36:45.1913627Z             {
2026-06-21T01:36:45.1913785Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1913885Z               "line": 531
2026-06-21T01:36:45.1913994Z             },
2026-06-21T01:36:45.1914081Z             {
2026-06-21T01:36:45.1914219Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1914318Z               "line": 543
2026-06-21T01:36:45.1914419Z             },
2026-06-21T01:36:45.1914524Z             {
2026-06-21T01:36:45.1914653Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T01:36:45.1914759Z               "line": 555
2026-06-21T01:36:45.1914848Z             },
2026-06-21T01:36:45.1914948Z             {
2026-06-21T01:36:45.1915093Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.1915196Z               "line": 1145
2026-06-21T01:36:45.1915292Z             },
2026-06-21T01:36:45.1915388Z             {
2026-06-21T01:36:45.1915515Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1915624Z               "line": 776
2026-06-21T01:36:45.1915725Z             }
2026-06-21T01:36:45.1915828Z           ]
2026-06-21T01:36:45.1915922Z         }
2026-06-21T01:36:45.1916022Z       }
2026-06-21T01:36:45.1916128Z     },
2026-06-21T01:36:45.1916227Z     {
2026-06-21T01:36:45.1916337Z       "id": "REQ-SHELL-5",
2026-06-21T01:36:45.1917596Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T01:36:45.1917706Z       "requiredStages": [
2026-06-21T01:36:45.1917796Z         "doc",
2026-06-21T01:36:45.1917897Z         "impl",
2026-06-21T01:36:45.1918002Z         "unit",
2026-06-21T01:36:45.1918101Z         "int"
2026-06-21T01:36:45.1918192Z       ],
2026-06-21T01:36:45.1918293Z       "stages": {
2026-06-21T01:36:45.1918401Z         "doc": {
2026-06-21T01:36:45.1918500Z           "complete": true,
2026-06-21T01:36:45.1918606Z           "evidence": [
2026-06-21T01:36:45.1918782Z             {
2026-06-21T01:36:45.1918892Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1919083Z               "line": 284
2026-06-21T01:36:45.1919173Z             }
2026-06-21T01:36:45.1919279Z           ]
2026-06-21T01:36:45.1919374Z         },
2026-06-21T01:36:45.1919483Z         "impl": {
2026-06-21T01:36:45.1919589Z           "complete": true,
2026-06-21T01:36:45.1919693Z           "evidence": [
2026-06-21T01:36:45.1919793Z             {
2026-06-21T01:36:45.1919923Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T01:36:45.1920027Z               "line": 260
2026-06-21T01:36:45.1920117Z             }
2026-06-21T01:36:45.1920214Z           ]
2026-06-21T01:36:45.1920403Z         },
2026-06-21T01:36:45.1920500Z         "int": {
2026-06-21T01:36:45.1920609Z           "complete": true,
2026-06-21T01:36:45.1920712Z           "evidence": [
2026-06-21T01:36:45.1920813Z             {
2026-06-21T01:36:45.1920945Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1921053Z               "line": 827
2026-06-21T01:36:45.1921153Z             },
2026-06-21T01:36:45.1921250Z             {
2026-06-21T01:36:45.1921377Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1921482Z               "line": 1290
2026-06-21T01:36:45.1921578Z             },
2026-06-21T01:36:45.1921668Z             {
2026-06-21T01:36:45.1921832Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T01:36:45.1921936Z               "line": 23
2026-06-21T01:36:45.1922035Z             }
2026-06-21T01:36:45.1922132Z           ]
2026-06-21T01:36:45.1922231Z         },
2026-06-21T01:36:45.1922335Z         "unit": {
2026-06-21T01:36:45.1922446Z           "complete": true,
2026-06-21T01:36:45.1922545Z           "evidence": [
2026-06-21T01:36:45.1922650Z             {
2026-06-21T01:36:45.1922776Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T01:36:45.1922874Z               "line": 803
2026-06-21T01:36:45.1922960Z             }
2026-06-21T01:36:45.1923066Z           ]
2026-06-21T01:36:45.1923161Z         }
2026-06-21T01:36:45.1923261Z       }
2026-06-21T01:36:45.1925861Z     },
2026-06-21T01:36:45.1925977Z     {
2026-06-21T01:36:45.1926099Z       "id": "REQ-START-1",
2026-06-21T01:36:45.1926322Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T01:36:45.1926440Z       "requiredStages": [
2026-06-21T01:36:45.1926539Z         "impl",
2026-06-21T01:36:45.1926645Z         "unit"
2026-06-21T01:36:45.1926745Z       ],
2026-06-21T01:36:45.1926849Z       "stages": {
2026-06-21T01:36:45.1926941Z         "doc": {
2026-06-21T01:36:45.1927050Z           "complete": false,
2026-06-21T01:36:45.1927169Z           "evidence": []
2026-06-21T01:36:45.1927265Z         },
2026-06-21T01:36:45.1927365Z         "impl": {
2026-06-21T01:36:45.1927469Z           "complete": true,
2026-06-21T01:36:45.1927580Z           "evidence": [
2026-06-21T01:36:45.1927679Z             {
2026-06-21T01:36:45.1927817Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T01:36:45.1927923Z               "line": 16
2026-06-21T01:36:45.1928013Z             }
2026-06-21T01:36:45.1928108Z           ]
2026-06-21T01:36:45.1928205Z         },
2026-06-21T01:36:45.1928299Z         "int": {
2026-06-21T01:36:45.1928399Z           "complete": false,
2026-06-21T01:36:45.1928501Z           "evidence": []
2026-06-21T01:36:45.1928604Z         },
2026-06-21T01:36:45.1928700Z         "unit": {
2026-06-21T01:36:45.1928815Z           "complete": true,
2026-06-21T01:36:45.1928915Z           "evidence": [
2026-06-21T01:36:45.1929089Z             {
2026-06-21T01:36:45.1929219Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T01:36:45.1929324Z               "line": 48
2026-06-21T01:36:45.1929428Z             },
2026-06-21T01:36:45.1929520Z             {
2026-06-21T01:36:45.1929643Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T01:36:45.1929748Z               "line": 63
2026-06-21T01:36:45.1929834Z             }
2026-06-21T01:36:45.1930058Z           ]
2026-06-21T01:36:45.1930158Z         }
2026-06-21T01:36:45.1930263Z       }
2026-06-21T01:36:45.1930358Z     },
2026-06-21T01:36:45.1930454Z     {
2026-06-21T01:36:45.1930558Z       "id": "REQ-START-2",
2026-06-21T01:36:45.1930721Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T01:36:45.1930836Z       "requiredStages": [
2026-06-21T01:36:45.1930935Z         "impl",
2026-06-21T01:36:45.1931035Z         "unit",
2026-06-21T01:36:45.1931131Z         "int"
2026-06-21T01:36:45.1931230Z       ],
2026-06-21T01:36:45.1931329Z       "stages": {
2026-06-21T01:36:45.1931434Z         "doc": {
2026-06-21T01:36:45.1931642Z           "complete": false,
2026-06-21T01:36:45.1931752Z           "evidence": []
2026-06-21T01:36:45.1931857Z         },
2026-06-21T01:36:45.1931961Z         "impl": {
2026-06-21T01:36:45.1932067Z           "complete": true,
2026-06-21T01:36:45.1932158Z           "evidence": [
2026-06-21T01:36:45.1932261Z             {
2026-06-21T01:36:45.1932406Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1932501Z               "line": 16
2026-06-21T01:36:45.1932590Z             },
2026-06-21T01:36:45.1932682Z             {
2026-06-21T01:36:45.1932816Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1932920Z               "line": 115
2026-06-21T01:36:45.1933021Z             },
2026-06-21T01:36:45.1933125Z             {
2026-06-21T01:36:45.1933254Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1933355Z               "line": 300
2026-06-21T01:36:45.1933448Z             }
2026-06-21T01:36:45.1933549Z           ]
2026-06-21T01:36:45.1933646Z         },
2026-06-21T01:36:45.1933750Z         "int": {
2026-06-21T01:36:45.1933859Z           "complete": true,
2026-06-21T01:36:45.1933951Z           "evidence": [
2026-06-21T01:36:45.1934055Z             {
2026-06-21T01:36:45.1934182Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:45.1934292Z               "line": 186
2026-06-21T01:36:45.1934386Z             }
2026-06-21T01:36:45.1934490Z           ]
2026-06-21T01:36:45.1934590Z         },
2026-06-21T01:36:45.1934686Z         "unit": {
2026-06-21T01:36:45.1934795Z           "complete": true,
2026-06-21T01:36:45.1934891Z           "evidence": [
2026-06-21T01:36:45.1934996Z             {
2026-06-21T01:36:45.1935119Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1935225Z               "line": 590
2026-06-21T01:36:45.1935325Z             },
2026-06-21T01:36:45.1935429Z             {
2026-06-21T01:36:45.1935569Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1935658Z               "line": 623
2026-06-21T01:36:45.1935763Z             }
2026-06-21T01:36:45.1935869Z           ]
2026-06-21T01:36:45.1935968Z         }
2026-06-21T01:36:45.1936073Z       }
2026-06-21T01:36:45.1936170Z     },
2026-06-21T01:36:45.1936274Z     {
2026-06-21T01:36:45.1936378Z       "id": "REQ-START-3",
2026-06-21T01:36:45.1936575Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T01:36:45.1936678Z       "requiredStages": [
2026-06-21T01:36:45.1936777Z         "impl",
2026-06-21T01:36:45.1936878Z         "unit",
2026-06-21T01:36:45.1936976Z         "int"
2026-06-21T01:36:45.1937080Z       ],
2026-06-21T01:36:45.1937181Z       "stages": {
2026-06-21T01:36:45.1937281Z         "doc": {
2026-06-21T01:36:45.1937385Z           "complete": false,
2026-06-21T01:36:45.1937487Z           "evidence": []
2026-06-21T01:36:45.1937596Z         },
2026-06-21T01:36:45.1937696Z         "impl": {
2026-06-21T01:36:45.1937807Z           "complete": true,
2026-06-21T01:36:45.1937906Z           "evidence": [
2026-06-21T01:36:45.1938010Z             {
2026-06-21T01:36:45.1938150Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.1938254Z               "line": 23
2026-06-21T01:36:45.1938358Z             },
2026-06-21T01:36:45.1938451Z             {
2026-06-21T01:36:45.1938587Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.1938760Z               "line": 205
2026-06-21T01:36:45.1938864Z             },
2026-06-21T01:36:45.1939051Z             {
2026-06-21T01:36:45.1939183Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.1939289Z               "line": 221
2026-06-21T01:36:45.1939375Z             },
2026-06-21T01:36:45.1939475Z             {
2026-06-21T01:36:45.1939593Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1939692Z               "line": 17
2026-06-21T01:36:45.1939794Z             },
2026-06-21T01:36:45.1939888Z             {
2026-06-21T01:36:45.1940017Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1940207Z               "line": 35
2026-06-21T01:36:45.1940308Z             },
2026-06-21T01:36:45.1940409Z             {
2026-06-21T01:36:45.1940527Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1940637Z               "line": 116
2026-06-21T01:36:45.1940737Z             }
2026-06-21T01:36:45.1940828Z           ]
2026-06-21T01:36:45.1940927Z         },
2026-06-21T01:36:45.1941029Z         "int": {
2026-06-21T01:36:45.1941137Z           "complete": true,
2026-06-21T01:36:45.1941237Z           "evidence": [
2026-06-21T01:36:45.1941339Z             {
2026-06-21T01:36:45.1941466Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T01:36:45.1941567Z               "line": 488
2026-06-21T01:36:45.1941658Z             }
2026-06-21T01:36:45.1941762Z           ]
2026-06-21T01:36:45.1941856Z         },
2026-06-21T01:36:45.1941962Z         "unit": {
2026-06-21T01:36:45.1942070Z           "complete": true,
2026-06-21T01:36:45.1942164Z           "evidence": [
2026-06-21T01:36:45.1942264Z             {
2026-06-21T01:36:45.1942394Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.1942502Z               "line": 381
2026-06-21T01:36:45.1942603Z             },
2026-06-21T01:36:45.1942703Z             {
2026-06-21T01:36:45.1942831Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.1942942Z               "line": 402
2026-06-21T01:36:45.1943037Z             },
2026-06-21T01:36:45.1943131Z             {
2026-06-21T01:36:45.1943257Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T01:36:45.1943361Z               "line": 412
2026-06-21T01:36:45.1943465Z             },
2026-06-21T01:36:45.1943571Z             {
2026-06-21T01:36:45.1943695Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1943799Z               "line": 591
2026-06-21T01:36:45.1943901Z             },
2026-06-21T01:36:45.1944000Z             {
2026-06-21T01:36:45.1944124Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1944239Z               "line": 624
2026-06-21T01:36:45.1944338Z             },
2026-06-21T01:36:45.1944434Z             {
2026-06-21T01:36:45.1944569Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1944667Z               "line": 657
2026-06-21T01:36:45.1944766Z             }
2026-06-21T01:36:45.1944862Z           ]
2026-06-21T01:36:45.1944970Z         }
2026-06-21T01:36:45.1945064Z       }
2026-06-21T01:36:45.1945151Z     },
2026-06-21T01:36:45.1945251Z     {
2026-06-21T01:36:45.1945360Z       "id": "REQ-START-4",
2026-06-21T01:36:45.1945514Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T01:36:45.1945618Z       "requiredStages": [
2026-06-21T01:36:45.1945722Z         "impl",
2026-06-21T01:36:45.1945824Z         "unit"
2026-06-21T01:36:45.1945919Z       ],
2026-06-21T01:36:45.1946027Z       "stages": {
2026-06-21T01:36:45.1946124Z         "doc": {
2026-06-21T01:36:45.1946237Z           "complete": false,
2026-06-21T01:36:45.1946342Z           "evidence": []
2026-06-21T01:36:45.1946444Z         },
2026-06-21T01:36:45.1946543Z         "impl": {
2026-06-21T01:36:45.1946652Z           "complete": true,
2026-06-21T01:36:45.1946749Z           "evidence": [
2026-06-21T01:36:45.1946848Z             {
2026-06-21T01:36:45.1947116Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1947214Z               "line": 585
2026-06-21T01:36:45.1947318Z             }
2026-06-21T01:36:45.1947409Z           ]
2026-06-21T01:36:45.1947504Z         },
2026-06-21T01:36:45.1947607Z         "int": {
2026-06-21T01:36:45.1947717Z           "complete": false,
2026-06-21T01:36:45.1947828Z           "evidence": []
2026-06-21T01:36:45.1947917Z         },
2026-06-21T01:36:45.1948018Z         "unit": {
2026-06-21T01:36:45.1948123Z           "complete": true,
2026-06-21T01:36:45.1948227Z           "evidence": [
2026-06-21T01:36:45.1948328Z             {
2026-06-21T01:36:45.1948452Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.1948633Z               "line": 1026
2026-06-21T01:36:45.1948733Z             }
2026-06-21T01:36:45.1948833Z           ]
2026-06-21T01:36:45.1948933Z         }
2026-06-21T01:36:45.1949109Z       }
2026-06-21T01:36:45.1949205Z     },
2026-06-21T01:36:45.1949292Z     {
2026-06-21T01:36:45.1949400Z       "id": "REQ-START-5",
2026-06-21T01:36:45.1952341Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T01:36:45.1952478Z       "requiredStages": [
2026-06-21T01:36:45.1952578Z         "doc",
2026-06-21T01:36:45.1952686Z         "impl",
2026-06-21T01:36:45.1952771Z         "unit",
2026-06-21T01:36:45.1952877Z         "int"
2026-06-21T01:36:45.1952967Z       ],
2026-06-21T01:36:45.1953067Z       "stages": {
2026-06-21T01:36:45.1953168Z         "doc": {
2026-06-21T01:36:45.1953278Z           "complete": true,
2026-06-21T01:36:45.1953386Z           "evidence": [
2026-06-21T01:36:45.1953483Z             {
2026-06-21T01:36:45.1953592Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.1953692Z               "line": 176
2026-06-21T01:36:45.1953794Z             },
2026-06-21T01:36:45.1953898Z             {
2026-06-21T01:36:45.1954055Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T01:36:45.1954160Z               "line": 28
2026-06-21T01:36:45.1954245Z             }
2026-06-21T01:36:45.1954345Z           ]
2026-06-21T01:36:45.1954442Z         },
2026-06-21T01:36:45.1954541Z         "impl": {
2026-06-21T01:36:45.1954646Z           "complete": true,
2026-06-21T01:36:45.1954752Z           "evidence": [
2026-06-21T01:36:45.1954851Z             {
2026-06-21T01:36:45.1954989Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1955095Z               "line": 26
2026-06-21T01:36:45.1955199Z             },
2026-06-21T01:36:45.1955284Z             {
2026-06-21T01:36:45.1955417Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1955520Z               "line": 212
2026-06-21T01:36:45.1955624Z             },
2026-06-21T01:36:45.1955716Z             {
2026-06-21T01:36:45.1955859Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1955958Z               "line": 221
2026-06-21T01:36:45.1956059Z             },
2026-06-21T01:36:45.1956155Z             {
2026-06-21T01:36:45.1956292Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1956398Z               "line": 485
2026-06-21T01:36:45.1956612Z             },
2026-06-21T01:36:45.1956713Z             {
2026-06-21T01:36:45.1956841Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1956946Z               "line": 36
2026-06-21T01:36:45.1957037Z             },
2026-06-21T01:36:45.1957145Z             {
2026-06-21T01:36:45.1957275Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1957376Z               "line": 118
2026-06-21T01:36:45.1957479Z             },
2026-06-21T01:36:45.1957571Z             {
2026-06-21T01:36:45.1957700Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T01:36:45.1957798Z               "line": 329
2026-06-21T01:36:45.1957984Z             }
2026-06-21T01:36:45.1958083Z           ]
2026-06-21T01:36:45.1958177Z         },
2026-06-21T01:36:45.1958282Z         "int": {
2026-06-21T01:36:45.1958388Z           "complete": true,
2026-06-21T01:36:45.1958487Z           "evidence": [
2026-06-21T01:36:45.1958573Z             {
2026-06-21T01:36:45.1958717Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T01:36:45.1958820Z               "line": 17
2026-06-21T01:36:45.1958917Z             }
2026-06-21T01:36:45.1959092Z           ]
2026-06-21T01:36:45.1959188Z         },
2026-06-21T01:36:45.1959294Z         "unit": {
2026-06-21T01:36:45.1959403Z           "complete": true,
2026-06-21T01:36:45.1959507Z           "evidence": [
2026-06-21T01:36:45.1959599Z             {
2026-06-21T01:36:45.1959732Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1959827Z               "line": 358
2026-06-21T01:36:45.1959928Z             },
2026-06-21T01:36:45.1960027Z             {
2026-06-21T01:36:45.1960157Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T01:36:45.1960262Z               "line": 371
2026-06-21T01:36:45.1960366Z             },
2026-06-21T01:36:45.1960462Z             {
2026-06-21T01:36:45.1960591Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T01:36:45.1960694Z               "line": 597
2026-06-21T01:36:45.1960794Z             }
2026-06-21T01:36:45.1960895Z           ]
2026-06-21T01:36:45.1960984Z         }
2026-06-21T01:36:45.1961079Z       }
2026-06-21T01:36:45.1961166Z     },
2026-06-21T01:36:45.1961257Z     {
2026-06-21T01:36:45.1961366Z       "id": "REQ-STORE-1",
2026-06-21T01:36:45.1962243Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T01:36:45.1962362Z       "requiredStages": [
2026-06-21T01:36:45.1962455Z         "impl",
2026-06-21T01:36:45.1962548Z         "unit"
2026-06-21T01:36:45.1962649Z       ],
2026-06-21T01:36:45.1962745Z       "stages": {
2026-06-21T01:36:45.1962840Z         "doc": {
2026-06-21T01:36:45.1962939Z           "complete": false,
2026-06-21T01:36:45.1963043Z           "evidence": []
2026-06-21T01:36:45.1963143Z         },
2026-06-21T01:36:45.1963251Z         "impl": {
2026-06-21T01:36:45.1963356Z           "complete": true,
2026-06-21T01:36:45.1963457Z           "evidence": [
2026-06-21T01:36:45.1963561Z             {
2026-06-21T01:36:45.1963704Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1963805Z               "line": 23
2026-06-21T01:36:45.1963904Z             },
2026-06-21T01:36:45.1964004Z             {
2026-06-21T01:36:45.1964143Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1964257Z               "line": 46
2026-06-21T01:36:45.1964358Z             },
2026-06-21T01:36:45.1964463Z             {
2026-06-21T01:36:45.1964605Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1964706Z               "line": 97
2026-06-21T01:36:45.1964810Z             },
2026-06-21T01:36:45.1964910Z             {
2026-06-21T01:36:45.1965054Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1965254Z               "line": 125
2026-06-21T01:36:45.1965350Z             },
2026-06-21T01:36:45.1965454Z             {
2026-06-21T01:36:45.1965584Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1965693Z               "line": 207
2026-06-21T01:36:45.1965792Z             },
2026-06-21T01:36:45.1965901Z             {
2026-06-21T01:36:45.1966038Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1966142Z               "line": 231
2026-06-21T01:36:45.1966247Z             },
2026-06-21T01:36:45.1966343Z             {
2026-06-21T01:36:45.1966485Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1966677Z               "line": 467
2026-06-21T01:36:45.1966781Z             },
2026-06-21T01:36:45.1966881Z             {
2026-06-21T01:36:45.1967020Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1967124Z               "line": 25
2026-06-21T01:36:45.1967220Z             },
2026-06-21T01:36:45.1967329Z             {
2026-06-21T01:36:45.1967462Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1967559Z               "line": 120
2026-06-21T01:36:45.1967658Z             },
2026-06-21T01:36:45.1967749Z             {
2026-06-21T01:36:45.1967884Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1967987Z               "line": 148
2026-06-21T01:36:45.1968087Z             },
2026-06-21T01:36:45.1968189Z             {
2026-06-21T01:36:45.1968316Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1968429Z               "line": 165
2026-06-21T01:36:45.1968525Z             },
2026-06-21T01:36:45.1968619Z             {
2026-06-21T01:36:45.1968746Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1968847Z               "line": 180
2026-06-21T01:36:45.1969028Z             },
2026-06-21T01:36:45.1969118Z             {
2026-06-21T01:36:45.1969262Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1969366Z               "line": 198
2026-06-21T01:36:45.1969468Z             },
2026-06-21T01:36:45.1969563Z             {
2026-06-21T01:36:45.1969700Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1969806Z               "line": 207
2026-06-21T01:36:45.1969905Z             },
2026-06-21T01:36:45.1970000Z             {
2026-06-21T01:36:45.1970140Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:36:45.1970244Z               "line": 16
2026-06-21T01:36:45.1970334Z             },
2026-06-21T01:36:45.1970431Z             {
2026-06-21T01:36:45.1970568Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:36:45.1970673Z               "line": 63
2026-06-21T01:36:45.1970770Z             }
2026-06-21T01:36:45.1970869Z           ]
2026-06-21T01:36:45.1970983Z         },
2026-06-21T01:36:45.1971094Z         "int": {
2026-06-21T01:36:45.1971207Z           "complete": false,
2026-06-21T01:36:45.1971311Z           "evidence": []
2026-06-21T01:36:45.1971411Z         },
2026-06-21T01:36:45.1971508Z         "unit": {
2026-06-21T01:36:45.1971616Z           "complete": true,
2026-06-21T01:36:45.1971721Z           "evidence": [
2026-06-21T01:36:45.1971822Z             {
2026-06-21T01:36:45.1971959Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1972061Z               "line": 584
2026-06-21T01:36:45.1972166Z             },
2026-06-21T01:36:45.1972264Z             {
2026-06-21T01:36:45.1972399Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1972504Z               "line": 594
2026-06-21T01:36:45.1972603Z             },
2026-06-21T01:36:45.1972710Z             {
2026-06-21T01:36:45.1972851Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1972952Z               "line": 616
2026-06-21T01:36:45.1973048Z             },
2026-06-21T01:36:45.1973151Z             {
2026-06-21T01:36:45.1973291Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1973494Z               "line": 632
2026-06-21T01:36:45.1973594Z             },
2026-06-21T01:36:45.1973694Z             {
2026-06-21T01:36:45.1973830Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T01:36:45.1973940Z               "line": 690
2026-06-21T01:36:45.1974041Z             },
2026-06-21T01:36:45.1974140Z             {
2026-06-21T01:36:45.1974288Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1974389Z               "line": 472
2026-06-21T01:36:45.1974493Z             },
2026-06-21T01:36:45.1974589Z             {
2026-06-21T01:36:45.1974827Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T01:36:45.1974933Z               "line": 507
2026-06-21T01:36:45.1975032Z             },
2026-06-21T01:36:45.1975136Z             {
2026-06-21T01:36:45.1975257Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:36:45.1975366Z               "line": 120
2026-06-21T01:36:45.1975475Z             },
2026-06-21T01:36:45.1975567Z             {
2026-06-21T01:36:45.1975704Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T01:36:45.1975804Z               "line": 128
2026-06-21T01:36:45.1975906Z             }
2026-06-21T01:36:45.1975999Z           ]
2026-06-21T01:36:45.1976100Z         }
2026-06-21T01:36:45.1976192Z       }
2026-06-21T01:36:45.1976286Z     },
2026-06-21T01:36:45.1976390Z     {
2026-06-21T01:36:45.1976499Z       "id": "REQ-SUBNET-1",
2026-06-21T01:36:45.1976841Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T01:36:45.1976955Z       "requiredStages": [
2026-06-21T01:36:45.1977059Z         "impl",
2026-06-21T01:36:45.1977156Z         "unit"
2026-06-21T01:36:45.1977256Z       ],
2026-06-21T01:36:45.1977355Z       "stages": {
2026-06-21T01:36:45.1977456Z         "doc": {
2026-06-21T01:36:45.1977570Z           "complete": false,
2026-06-21T01:36:45.1977675Z           "evidence": []
2026-06-21T01:36:45.1977775Z         },
2026-06-21T01:36:45.1977875Z         "impl": {
2026-06-21T01:36:45.1977985Z           "complete": true,
2026-06-21T01:36:45.1978071Z           "evidence": [
2026-06-21T01:36:45.1978166Z             {
2026-06-21T01:36:45.1978319Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1978420Z               "line": 281
2026-06-21T01:36:45.1978519Z             },
2026-06-21T01:36:45.1978614Z             {
2026-06-21T01:36:45.1978764Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1978862Z               "line": 651
2026-06-21T01:36:45.1979037Z             },
2026-06-21T01:36:45.1979133Z             {
2026-06-21T01:36:45.1979245Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1979354Z               "line": 3399
2026-06-21T01:36:45.1979456Z             },
2026-06-21T01:36:45.1979570Z             {
2026-06-21T01:36:45.1979688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1979799Z               "line": 3709
2026-06-21T01:36:45.1979898Z             },
2026-06-21T01:36:45.1979984Z             {
2026-06-21T01:36:45.1980113Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1980213Z               "line": 3728
2026-06-21T01:36:45.1980318Z             },
2026-06-21T01:36:45.1980414Z             {
2026-06-21T01:36:45.1980533Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1980637Z               "line": 3792
2026-06-21T01:36:45.1980738Z             },
2026-06-21T01:36:45.1980838Z             {
2026-06-21T01:36:45.1980952Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1981058Z               "line": 3834
2026-06-21T01:36:45.1981162Z             },
2026-06-21T01:36:45.1981258Z             {
2026-06-21T01:36:45.1981373Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1981476Z               "line": 4023
2026-06-21T01:36:45.1981577Z             },
2026-06-21T01:36:45.1981795Z             {
2026-06-21T01:36:45.1981924Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1982029Z               "line": 4093
2026-06-21T01:36:45.1982129Z             },
2026-06-21T01:36:45.1982233Z             {
2026-06-21T01:36:45.1982349Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1982462Z               "line": 4317
2026-06-21T01:36:45.1982553Z             },
2026-06-21T01:36:45.1982654Z             {
2026-06-21T01:36:45.1982777Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1982877Z               "line": 4961
2026-06-21T01:36:45.1982983Z             },
2026-06-21T01:36:45.1983083Z             {
2026-06-21T01:36:45.1983298Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.1983407Z               "line": 418
2026-06-21T01:36:45.1983507Z             }
2026-06-21T01:36:45.1983603Z           ]
2026-06-21T01:36:45.1983697Z         },
2026-06-21T01:36:45.1983798Z         "int": {
2026-06-21T01:36:45.1983909Z           "complete": false,
2026-06-21T01:36:45.1984016Z           "evidence": []
2026-06-21T01:36:45.1984116Z         },
2026-06-21T01:36:45.1984211Z         "unit": {
2026-06-21T01:36:45.1984319Z           "complete": true,
2026-06-21T01:36:45.1984424Z           "evidence": [
2026-06-21T01:36:45.1984529Z             {
2026-06-21T01:36:45.1984671Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.1984776Z               "line": 1584
2026-06-21T01:36:45.1984873Z             },
2026-06-21T01:36:45.1984977Z             {
2026-06-21T01:36:45.1985100Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1985206Z               "line": 9964
2026-06-21T01:36:45.1985311Z             },
2026-06-21T01:36:45.1985410Z             {
2026-06-21T01:36:45.1985512Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1985616Z               "line": 10134
2026-06-21T01:36:45.1985721Z             },
2026-06-21T01:36:45.1985822Z             {
2026-06-21T01:36:45.1985926Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1986035Z               "line": 10141
2026-06-21T01:36:45.1986122Z             },
2026-06-21T01:36:45.1986226Z             {
2026-06-21T01:36:45.1986336Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1986437Z               "line": 10194
2026-06-21T01:36:45.1986536Z             },
2026-06-21T01:36:45.1986631Z             {
2026-06-21T01:36:45.1986757Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1986860Z               "line": 10211
2026-06-21T01:36:45.1986964Z             },
2026-06-21T01:36:45.1987059Z             {
2026-06-21T01:36:45.1987177Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1987286Z               "line": 10241
2026-06-21T01:36:45.1987386Z             },
2026-06-21T01:36:45.1987487Z             {
2026-06-21T01:36:45.1987596Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1987706Z               "line": 10357
2026-06-21T01:36:45.1987797Z             },
2026-06-21T01:36:45.1987906Z             {
2026-06-21T01:36:45.1988021Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1988126Z               "line": 10508
2026-06-21T01:36:45.1988225Z             }
2026-06-21T01:36:45.1988316Z           ]
2026-06-21T01:36:45.1988417Z         }
2026-06-21T01:36:45.1988516Z       }
2026-06-21T01:36:45.1988616Z     },
2026-06-21T01:36:45.1988717Z     {
2026-06-21T01:36:45.1988816Z       "id": "REQ-SUBNET-2",
2026-06-21T01:36:45.1989155Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T01:36:45.1989261Z       "requiredStages": [
2026-06-21T01:36:45.1989370Z         "impl",
2026-06-21T01:36:45.1989470Z         "unit",
2026-06-21T01:36:45.1989569Z         "int"
2026-06-21T01:36:45.1989674Z       ],
2026-06-21T01:36:45.1989777Z       "stages": {
2026-06-21T01:36:45.1989871Z         "doc": {
2026-06-21T01:36:45.1989977Z           "complete": true,
2026-06-21T01:36:45.1990082Z           "evidence": [
2026-06-21T01:36:45.1990273Z             {
2026-06-21T01:36:45.1990439Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T01:36:45.1990549Z               "line": 60
2026-06-21T01:36:45.1990631Z             }
2026-06-21T01:36:45.1990735Z           ]
2026-06-21T01:36:45.1990829Z         },
2026-06-21T01:36:45.1990931Z         "impl": {
2026-06-21T01:36:45.1991040Z           "complete": true,
2026-06-21T01:36:45.1991149Z           "evidence": [
2026-06-21T01:36:45.1991251Z             {
2026-06-21T01:36:45.1991388Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.1991493Z               "line": 886
2026-06-21T01:36:45.1991702Z             },
2026-06-21T01:36:45.1991803Z             {
2026-06-21T01:36:45.1991933Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.1992041Z               "line": 1948
2026-06-21T01:36:45.1992138Z             },
2026-06-21T01:36:45.1992238Z             {
2026-06-21T01:36:45.1992365Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1992469Z               "line": 633
2026-06-21T01:36:45.1992571Z             },
2026-06-21T01:36:45.1992661Z             {
2026-06-21T01:36:45.1992789Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T01:36:45.1992890Z               "line": 817
2026-06-21T01:36:45.1992985Z             },
2026-06-21T01:36:45.1993084Z             {
2026-06-21T01:36:45.1993205Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1993309Z               "line": 26
2026-06-21T01:36:45.1993404Z             },
2026-06-21T01:36:45.1993500Z             {
2026-06-21T01:36:45.1993634Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1993733Z               "line": 60
2026-06-21T01:36:45.1993830Z             },
2026-06-21T01:36:45.1993928Z             {
2026-06-21T01:36:45.1994053Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1994163Z               "line": 168
2026-06-21T01:36:45.1994257Z             },
2026-06-21T01:36:45.1994358Z             {
2026-06-21T01:36:45.1994483Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1994581Z               "line": 295
2026-06-21T01:36:45.1994667Z             },
2026-06-21T01:36:45.1994771Z             {
2026-06-21T01:36:45.1994903Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1995003Z               "line": 417
2026-06-21T01:36:45.1995108Z             },
2026-06-21T01:36:45.1995204Z             {
2026-06-21T01:36:45.1995351Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T01:36:45.1995452Z               "line": 252
2026-06-21T01:36:45.1995561Z             },
2026-06-21T01:36:45.1995660Z             {
2026-06-21T01:36:45.1995767Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1995871Z               "line": 3755
2026-06-21T01:36:45.1995966Z             },
2026-06-21T01:36:45.1996062Z             {
2026-06-21T01:36:45.1996181Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1996290Z               "line": 4256
2026-06-21T01:36:45.1996387Z             },
2026-06-21T01:36:45.1996481Z             {
2026-06-21T01:36:45.1996600Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.1996702Z               "line": 4892
2026-06-21T01:36:45.1996795Z             }
2026-06-21T01:36:45.1996891Z           ]
2026-06-21T01:36:45.1996987Z         },
2026-06-21T01:36:45.1997092Z         "int": {
2026-06-21T01:36:45.1997196Z           "complete": true,
2026-06-21T01:36:45.1997302Z           "evidence": [
2026-06-21T01:36:45.1997402Z             {
2026-06-21T01:36:45.1997552Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T01:36:45.1997653Z               "line": 22
2026-06-21T01:36:45.1997756Z             },
2026-06-21T01:36:45.1997851Z             {
2026-06-21T01:36:45.1997985Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1998090Z               "line": 645
2026-06-21T01:36:45.1998266Z             },
2026-06-21T01:36:45.1998371Z             {
2026-06-21T01:36:45.1998509Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.1998610Z               "line": 887
2026-06-21T01:36:45.1998710Z             }
2026-06-21T01:36:45.1998799Z           ]
2026-06-21T01:36:45.1998896Z         },
2026-06-21T01:36:45.1999072Z         "unit": {
2026-06-21T01:36:45.1999191Z           "complete": true,
2026-06-21T01:36:45.1999296Z           "evidence": [
2026-06-21T01:36:45.1999396Z             {
2026-06-21T01:36:45.1999535Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.1999639Z               "line": 586
2026-06-21T01:36:45.1999850Z             },
2026-06-21T01:36:45.1999945Z             {
2026-06-21T01:36:45.2000072Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2000176Z               "line": 10004
2026-06-21T01:36:45.2000276Z             },
2026-06-21T01:36:45.2000380Z             {
2026-06-21T01:36:45.2000499Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2000605Z               "line": 10715
2026-06-21T01:36:45.2000694Z             }
2026-06-21T01:36:45.2000790Z           ]
2026-06-21T01:36:45.2000890Z         }
2026-06-21T01:36:45.2000995Z       }
2026-06-21T01:36:45.2001099Z     },
2026-06-21T01:36:45.2003917Z     {
2026-06-21T01:36:45.2004070Z       "id": "REQ-SUBNET-3",
2026-06-21T01:36:45.2004375Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T01:36:45.2004484Z       "requiredStages": [
2026-06-21T01:36:45.2004584Z         "impl",
2026-06-21T01:36:45.2004690Z         "unit"
2026-06-21T01:36:45.2004794Z       ],
2026-06-21T01:36:45.2004894Z       "stages": {
2026-06-21T01:36:45.2005000Z         "doc": {
2026-06-21T01:36:45.2005108Z           "complete": false,
2026-06-21T01:36:45.2005217Z           "evidence": []
2026-06-21T01:36:45.2005318Z         },
2026-06-21T01:36:45.2005421Z         "impl": {
2026-06-21T01:36:45.2005530Z           "complete": true,
2026-06-21T01:36:45.2005630Z           "evidence": [
2026-06-21T01:36:45.2005736Z             {
2026-06-21T01:36:45.2005887Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2005988Z               "line": 152
2026-06-21T01:36:45.2006088Z             },
2026-06-21T01:36:45.2006187Z             {
2026-06-21T01:36:45.2006337Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2006436Z               "line": 299
2026-06-21T01:36:45.2006531Z             },
2026-06-21T01:36:45.2006622Z             {
2026-06-21T01:36:45.2006755Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2006860Z               "line": 443
2026-06-21T01:36:45.2006956Z             },
2026-06-21T01:36:45.2007056Z             {
2026-06-21T01:36:45.2007194Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2007286Z               "line": 532
2026-06-21T01:36:45.2007384Z             },
2026-06-21T01:36:45.2007485Z             {
2026-06-21T01:36:45.2007619Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2007723Z               "line": 125
2026-06-21T01:36:45.2007829Z             },
2026-06-21T01:36:45.2007925Z             {
2026-06-21T01:36:45.2008051Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2008146Z               "line": 253
2026-06-21T01:36:45.2008242Z             },
2026-06-21T01:36:45.2008345Z             {
2026-06-21T01:36:45.2008473Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2008583Z               "line": 264
2026-06-21T01:36:45.2008687Z             },
2026-06-21T01:36:45.2008792Z             {
2026-06-21T01:36:45.2008921Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2009122Z               "line": 285
2026-06-21T01:36:45.2009222Z             },
2026-06-21T01:36:45.2009317Z             {
2026-06-21T01:36:45.2009451Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2009713Z               "line": 621
2026-06-21T01:36:45.2009814Z             },
2026-06-21T01:36:45.2009913Z             {
2026-06-21T01:36:45.2010061Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2010167Z               "line": 680
2026-06-21T01:36:45.2010265Z             },
2026-06-21T01:36:45.2010366Z             {
2026-06-21T01:36:45.2010505Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.2010613Z               "line": 61
2026-06-21T01:36:45.2010708Z             },
2026-06-21T01:36:45.2010804Z             {
2026-06-21T01:36:45.2010935Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.2011131Z               "line": 90
2026-06-21T01:36:45.2011235Z             },
2026-06-21T01:36:45.2011330Z             {
2026-06-21T01:36:45.2011470Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.2011573Z               "line": 125
2026-06-21T01:36:45.2011679Z             },
2026-06-21T01:36:45.2011774Z             {
2026-06-21T01:36:45.2011902Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T01:36:45.2012008Z               "line": 9
2026-06-21T01:36:45.2012099Z             },
2026-06-21T01:36:45.2012203Z             {
2026-06-21T01:36:45.2012323Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2012432Z               "line": 4093
2026-06-21T01:36:45.2012523Z             },
2026-06-21T01:36:45.2012623Z             {
2026-06-21T01:36:45.2012747Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.2012852Z               "line": 445
2026-06-21T01:36:45.2012953Z             }
2026-06-21T01:36:45.2013057Z           ]
2026-06-21T01:36:45.2013152Z         },
2026-06-21T01:36:45.2013253Z         "int": {
2026-06-21T01:36:45.2013358Z           "complete": false,
2026-06-21T01:36:45.2013471Z           "evidence": []
2026-06-21T01:36:45.2013561Z         },
2026-06-21T01:36:45.2013662Z         "unit": {
2026-06-21T01:36:45.2013767Z           "complete": true,
2026-06-21T01:36:45.2013875Z           "evidence": [
2026-06-21T01:36:45.2013981Z             {
2026-06-21T01:36:45.2014124Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2014234Z               "line": 1356
2026-06-21T01:36:45.2014334Z             },
2026-06-21T01:36:45.2014434Z             {
2026-06-21T01:36:45.2014577Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2014682Z               "line": 1713
2026-06-21T01:36:45.2014786Z             },
2026-06-21T01:36:45.2014882Z             {
2026-06-21T01:36:45.2015016Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.2015116Z               "line": 892
2026-06-21T01:36:45.2015212Z             },
2026-06-21T01:36:45.2015312Z             {
2026-06-21T01:36:45.2015445Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2015541Z               "line": 991
2026-06-21T01:36:45.2015646Z             },
2026-06-21T01:36:45.2015744Z             {
2026-06-21T01:36:45.2015878Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2015981Z               "line": 1041
2026-06-21T01:36:45.2016085Z             },
2026-06-21T01:36:45.2016171Z             {
2026-06-21T01:36:45.2016306Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2016404Z               "line": 1100
2026-06-21T01:36:45.2016505Z             },
2026-06-21T01:36:45.2016605Z             {
2026-06-21T01:36:45.2016733Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T01:36:45.2016839Z               "line": 234
2026-06-21T01:36:45.2016943Z             },
2026-06-21T01:36:45.2017043Z             {
2026-06-21T01:36:45.2017178Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T01:36:45.2017282Z               "line": 49
2026-06-21T01:36:45.2017372Z             },
2026-06-21T01:36:45.2017474Z             {
2026-06-21T01:36:45.2017668Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2017774Z               "line": 10357
2026-06-21T01:36:45.2017878Z             },
2026-06-21T01:36:45.2017974Z             {
2026-06-21T01:36:45.2018099Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2018198Z               "line": 10463
2026-06-21T01:36:45.2018293Z             },
2026-06-21T01:36:45.2018394Z             {
2026-06-21T01:36:45.2018499Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2018602Z               "line": 10681
2026-06-21T01:36:45.2018701Z             }
2026-06-21T01:36:45.2018807Z           ]
2026-06-21T01:36:45.2018900Z         }
2026-06-21T01:36:45.2019162Z       }
2026-06-21T01:36:45.2019262Z     },
2026-06-21T01:36:45.2019352Z     {
2026-06-21T01:36:45.2019501Z       "id": "REQ-SUBNET-4",
2026-06-21T01:36:45.2019801Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T01:36:45.2019910Z       "requiredStages": [
2026-06-21T01:36:45.2020016Z         "impl",
2026-06-21T01:36:45.2020121Z         "unit"
2026-06-21T01:36:45.2020220Z       ],
2026-06-21T01:36:45.2020321Z       "stages": {
2026-06-21T01:36:45.2020422Z         "doc": {
2026-06-21T01:36:45.2020521Z           "complete": true,
2026-06-21T01:36:45.2020631Z           "evidence": [
2026-06-21T01:36:45.2020746Z             {
2026-06-21T01:36:45.2020927Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T01:36:45.2021033Z               "line": 60
2026-06-21T01:36:45.2021117Z             }
2026-06-21T01:36:45.2021221Z           ]
2026-06-21T01:36:45.2021321Z         },
2026-06-21T01:36:45.2021425Z         "impl": {
2026-06-21T01:36:45.2021533Z           "complete": true,
2026-06-21T01:36:45.2021638Z           "evidence": [
2026-06-21T01:36:45.2021740Z             {
2026-06-21T01:36:45.2021867Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2021973Z               "line": 3399
2026-06-21T01:36:45.2022073Z             },
2026-06-21T01:36:45.2022172Z             {
2026-06-21T01:36:45.2022283Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2022387Z               "line": 4859
2026-06-21T01:36:45.2022482Z             },
2026-06-21T01:36:45.2022578Z             {
2026-06-21T01:36:45.2022696Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2022801Z               "line": 4892
2026-06-21T01:36:45.2022907Z             }
2026-06-21T01:36:45.2023011Z           ]
2026-06-21T01:36:45.2023106Z         },
2026-06-21T01:36:45.2023203Z         "int": {
2026-06-21T01:36:45.2023312Z           "complete": false,
2026-06-21T01:36:45.2023417Z           "evidence": []
2026-06-21T01:36:45.2023513Z         },
2026-06-21T01:36:45.2023618Z         "unit": {
2026-06-21T01:36:45.2023722Z           "complete": true,
2026-06-21T01:36:45.2023828Z           "evidence": [
2026-06-21T01:36:45.2023924Z             {
2026-06-21T01:36:45.2024036Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2024145Z               "line": 10120
2026-06-21T01:36:45.2024232Z             },
2026-06-21T01:36:45.2024336Z             {
2026-06-21T01:36:45.2024440Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2024547Z               "line": 10194
2026-06-21T01:36:45.2024651Z             }
2026-06-21T01:36:45.2024746Z           ]
2026-06-21T01:36:45.2024847Z         }
2026-06-21T01:36:45.2024942Z       }
2026-06-21T01:36:45.2025041Z     },
2026-06-21T01:36:45.2025128Z     {
2026-06-21T01:36:45.2025233Z       "id": "REQ-SUBNET-5",
2026-06-21T01:36:45.2026438Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T01:36:45.2026555Z       "requiredStages": [
2026-06-21T01:36:45.2026770Z         "impl",
2026-06-21T01:36:45.2026875Z         "unit",
2026-06-21T01:36:45.2026974Z         "int"
2026-06-21T01:36:45.2027070Z       ],
2026-06-21T01:36:45.2027175Z       "stages": {
2026-06-21T01:36:45.2027279Z         "doc": {
2026-06-21T01:36:45.2027390Z           "complete": false,
2026-06-21T01:36:45.2027499Z           "evidence": []
2026-06-21T01:36:45.2027594Z         },
2026-06-21T01:36:45.2027690Z         "impl": {
2026-06-21T01:36:45.2027804Z           "complete": true,
2026-06-21T01:36:45.2027899Z           "evidence": [
2026-06-21T01:36:45.2028000Z             {
2026-06-21T01:36:45.2028138Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T01:36:45.2028329Z               "line": 128
2026-06-21T01:36:45.2028429Z             },
2026-06-21T01:36:45.2028534Z             {
2026-06-21T01:36:45.2028678Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T01:36:45.2028781Z               "line": 413
2026-06-21T01:36:45.2028882Z             },
2026-06-21T01:36:45.2029064Z             {
2026-06-21T01:36:45.2029200Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.2029310Z               "line": 74
2026-06-21T01:36:45.2029418Z             },
2026-06-21T01:36:45.2029521Z             {
2026-06-21T01:36:45.2029655Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.2029761Z               "line": 332
2026-06-21T01:36:45.2029860Z             },
2026-06-21T01:36:45.2029961Z             {
2026-06-21T01:36:45.2030099Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.2030189Z               "line": 621
2026-06-21T01:36:45.2030281Z             },
2026-06-21T01:36:45.2030390Z             {
2026-06-21T01:36:45.2030533Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:36:45.2030638Z               "line": 31
2026-06-21T01:36:45.2030738Z             },
2026-06-21T01:36:45.2030838Z             {
2026-06-21T01:36:45.2030967Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:36:45.2031071Z               "line": 50
2026-06-21T01:36:45.2031172Z             },
2026-06-21T01:36:45.2031273Z             {
2026-06-21T01:36:45.2031410Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:36:45.2031516Z               "line": 69
2026-06-21T01:36:45.2031611Z             },
2026-06-21T01:36:45.2031700Z             {
2026-06-21T01:36:45.2031838Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:36:45.2031938Z               "line": 113
2026-06-21T01:36:45.2032041Z             },
2026-06-21T01:36:45.2032136Z             {
2026-06-21T01:36:45.2032280Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T01:36:45.2032388Z               "line": 25
2026-06-21T01:36:45.2032484Z             },
2026-06-21T01:36:45.2032576Z             {
2026-06-21T01:36:45.2032708Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T01:36:45.2032809Z               "line": 34
2026-06-21T01:36:45.2032900Z             },
2026-06-21T01:36:45.2033000Z             {
2026-06-21T01:36:45.2033143Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:36:45.2033233Z               "line": 17
2026-06-21T01:36:45.2033333Z             },
2026-06-21T01:36:45.2033433Z             {
2026-06-21T01:36:45.2033562Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2033662Z               "line": 4817
2026-06-21T01:36:45.2033763Z             },
2026-06-21T01:36:45.2033868Z             {
2026-06-21T01:36:45.2033981Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T01:36:45.2034083Z               "line": 419
2026-06-21T01:36:45.2034178Z             }
2026-06-21T01:36:45.2034277Z           ]
2026-06-21T01:36:45.2034378Z         },
2026-06-21T01:36:45.2034479Z         "int": {
2026-06-21T01:36:45.2034586Z           "complete": true,
2026-06-21T01:36:45.2034690Z           "evidence": [
2026-06-21T01:36:45.2034792Z             {
2026-06-21T01:36:45.2034925Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.2035140Z               "line": 821
2026-06-21T01:36:45.2035239Z             }
2026-06-21T01:36:45.2035325Z           ]
2026-06-21T01:36:45.2035427Z         },
2026-06-21T01:36:45.2035522Z         "unit": {
2026-06-21T01:36:45.2035635Z           "complete": true,
2026-06-21T01:36:45.2035736Z           "evidence": [
2026-06-21T01:36:45.2035840Z             {
2026-06-21T01:36:45.2035973Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:45.2036075Z               "line": 341
2026-06-21T01:36:45.2036179Z             },
2026-06-21T01:36:45.2036269Z             {
2026-06-21T01:36:45.2036517Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T01:36:45.2036613Z               "line": 1115
2026-06-21T01:36:45.2036714Z             },
2026-06-21T01:36:45.2036812Z             {
2026-06-21T01:36:45.2036945Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T01:36:45.2037050Z               "line": 151
2026-06-21T01:36:45.2037153Z             },
2026-06-21T01:36:45.2037252Z             {
2026-06-21T01:36:45.2037383Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T01:36:45.2037482Z               "line": 61
2026-06-21T01:36:45.2037587Z             },
2026-06-21T01:36:45.2037683Z             {
2026-06-21T01:36:45.2037815Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:36:45.2037921Z               "line": 111
2026-06-21T01:36:45.2038017Z             },
2026-06-21T01:36:45.2038116Z             {
2026-06-21T01:36:45.2038250Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:36:45.2038355Z               "line": 138
2026-06-21T01:36:45.2038455Z             },
2026-06-21T01:36:45.2038560Z             {
2026-06-21T01:36:45.2038683Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T01:36:45.2038784Z               "line": 148
2026-06-21T01:36:45.2038884Z             },
2026-06-21T01:36:45.2039069Z             {
2026-06-21T01:36:45.2039190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2039295Z               "line": 10021
2026-06-21T01:36:45.2039394Z             }
2026-06-21T01:36:45.2039490Z           ]
2026-06-21T01:36:45.2039595Z         }
2026-06-21T01:36:45.2039684Z       }
2026-06-21T01:36:45.2039788Z     },
2026-06-21T01:36:45.2039889Z     {
2026-06-21T01:36:45.2039992Z       "id": "REQ-SUBNET-6",
2026-06-21T01:36:45.2040711Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T01:36:45.2040817Z       "requiredStages": [
2026-06-21T01:36:45.2040917Z         "impl",
2026-06-21T01:36:45.2041021Z         "unit"
2026-06-21T01:36:45.2041121Z       ],
2026-06-21T01:36:45.2041232Z       "stages": {
2026-06-21T01:36:45.2041331Z         "doc": {
2026-06-21T01:36:45.2041441Z           "complete": false,
2026-06-21T01:36:45.2041542Z           "evidence": []
2026-06-21T01:36:45.2041636Z         },
2026-06-21T01:36:45.2041737Z         "impl": {
2026-06-21T01:36:45.2041833Z           "complete": true,
2026-06-21T01:36:45.2041941Z           "evidence": [
2026-06-21T01:36:45.2042042Z             {
2026-06-21T01:36:45.2042176Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2042275Z               "line": 254
2026-06-21T01:36:45.2042379Z             },
2026-06-21T01:36:45.2042484Z             {
2026-06-21T01:36:45.2042601Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2042710Z               "line": 4475
2026-06-21T01:36:45.2042807Z             },
2026-06-21T01:36:45.2042911Z             {
2026-06-21T01:36:45.2043030Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2043136Z               "line": 4492
2026-06-21T01:36:45.2043236Z             },
2026-06-21T01:36:45.2043326Z             {
2026-06-21T01:36:45.2043541Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2043645Z               "line": 4545
2026-06-21T01:36:45.2043746Z             },
2026-06-21T01:36:45.2043840Z             {
2026-06-21T01:36:45.2043955Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2044061Z               "line": 4568
2026-06-21T01:36:45.2044160Z             }
2026-06-21T01:36:45.2044255Z           ]
2026-06-21T01:36:45.2044343Z         },
2026-06-21T01:36:45.2044437Z         "int": {
2026-06-21T01:36:45.2044542Z           "complete": false,
2026-06-21T01:36:45.2044653Z           "evidence": []
2026-06-21T01:36:45.2044752Z         },
2026-06-21T01:36:45.2044847Z         "unit": {
2026-06-21T01:36:45.2045044Z           "complete": true,
2026-06-21T01:36:45.2045146Z           "evidence": [
2026-06-21T01:36:45.2045246Z             {
2026-06-21T01:36:45.2045347Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2045452Z               "line": 10035
2026-06-21T01:36:45.2045551Z             },
2026-06-21T01:36:45.2045652Z             {
2026-06-21T01:36:45.2045772Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2045871Z               "line": 10068
2026-06-21T01:36:45.2045972Z             },
2026-06-21T01:36:45.2046072Z             {
2026-06-21T01:36:45.2046190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2046296Z               "line": 10077
2026-06-21T01:36:45.2046391Z             }
2026-06-21T01:36:45.2046490Z           ]
2026-06-21T01:36:45.2046587Z         }
2026-06-21T01:36:45.2046686Z       }
2026-06-21T01:36:45.2046777Z     },
2026-06-21T01:36:45.2046873Z     {
2026-06-21T01:36:45.2046978Z       "id": "REQ-SUBNET-7",
2026-06-21T01:36:45.2048728Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T01:36:45.2048849Z       "requiredStages": [
2026-06-21T01:36:45.2049019Z         "impl",
2026-06-21T01:36:45.2049115Z         "unit"
2026-06-21T01:36:45.2049215Z       ],
2026-06-21T01:36:45.2049320Z       "stages": {
2026-06-21T01:36:45.2049420Z         "doc": {
2026-06-21T01:36:45.2049516Z           "complete": false,
2026-06-21T01:36:45.2049625Z           "evidence": []
2026-06-21T01:36:45.2049720Z         },
2026-06-21T01:36:45.2049827Z         "impl": {
2026-06-21T01:36:45.2049935Z           "complete": true,
2026-06-21T01:36:45.2050035Z           "evidence": [
2026-06-21T01:36:45.2050132Z             {
2026-06-21T01:36:45.2050268Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T01:36:45.2050367Z               "line": 17
2026-06-21T01:36:45.2050473Z             },
2026-06-21T01:36:45.2050575Z             {
2026-06-21T01:36:45.2050709Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.2050815Z               "line": 103
2026-06-21T01:36:45.2050914Z             },
2026-06-21T01:36:45.2051014Z             {
2026-06-21T01:36:45.2051148Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T01:36:45.2051247Z               "line": 312
2026-06-21T01:36:45.2051343Z             },
2026-06-21T01:36:45.2051439Z             {
2026-06-21T01:36:45.2051586Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T01:36:45.2051686Z               "line": 131
2026-06-21T01:36:45.2051792Z             },
2026-06-21T01:36:45.2051891Z             {
2026-06-21T01:36:45.2052041Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2052144Z               "line": 160
2026-06-21T01:36:45.2052240Z             },
2026-06-21T01:36:45.2052331Z             {
2026-06-21T01:36:45.2052592Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2052694Z               "line": 447
2026-06-21T01:36:45.2052793Z             },
2026-06-21T01:36:45.2052892Z             {
2026-06-21T01:36:45.2053025Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2053133Z               "line": 670
2026-06-21T01:36:45.2053232Z             },
2026-06-21T01:36:45.2053333Z             {
2026-06-21T01:36:45.2053457Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2053566Z               "line": 710
2026-06-21T01:36:45.2053667Z             },
2026-06-21T01:36:45.2053763Z             {
2026-06-21T01:36:45.2053996Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2054096Z               "line": 766
2026-06-21T01:36:45.2054186Z             },
2026-06-21T01:36:45.2054283Z             {
2026-06-21T01:36:45.2054415Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.2054530Z               "line": 136
2026-06-21T01:36:45.2054626Z             },
2026-06-21T01:36:45.2054720Z             {
2026-06-21T01:36:45.2054844Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2054950Z               "line": 139
2026-06-21T01:36:45.2055045Z             }
2026-06-21T01:36:45.2055140Z           ]
2026-06-21T01:36:45.2055241Z         },
2026-06-21T01:36:45.2055340Z         "int": {
2026-06-21T01:36:45.2055450Z           "complete": false,
2026-06-21T01:36:45.2055542Z           "evidence": []
2026-06-21T01:36:45.2055641Z         },
2026-06-21T01:36:45.2055735Z         "unit": {
2026-06-21T01:36:45.2055845Z           "complete": true,
2026-06-21T01:36:45.2055945Z           "evidence": [
2026-06-21T01:36:45.2056045Z             {
2026-06-21T01:36:45.2056174Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T01:36:45.2056274Z               "line": 136
2026-06-21T01:36:45.2056369Z             },
2026-06-21T01:36:45.2056464Z             {
2026-06-21T01:36:45.2056608Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T01:36:45.2056717Z               "line": 156
2026-06-21T01:36:45.2056813Z             },
2026-06-21T01:36:45.2056913Z             {
2026-06-21T01:36:45.2057050Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2057147Z               "line": 987
2026-06-21T01:36:45.2057252Z             },
2026-06-21T01:36:45.2057351Z             {
2026-06-21T01:36:45.2057496Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T01:36:45.2057594Z               "line": 1009
2026-06-21T01:36:45.2057699Z             },
2026-06-21T01:36:45.2057801Z             {
2026-06-21T01:36:45.2057942Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T01:36:45.2058051Z               "line": 1419
2026-06-21T01:36:45.2058147Z             },
2026-06-21T01:36:45.2058250Z             {
2026-06-21T01:36:45.2058368Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T01:36:45.2058474Z               "line": 1036
2026-06-21T01:36:45.2058574Z             }
2026-06-21T01:36:45.2058674Z           ]
2026-06-21T01:36:45.2058779Z         }
2026-06-21T01:36:45.2058865Z       }
2026-06-21T01:36:45.2059046Z     },
2026-06-21T01:36:45.2059141Z     {
2026-06-21T01:36:45.2059255Z       "id": "REQ-SUBNET-8",
2026-06-21T01:36:45.2060396Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T01:36:45.2060524Z       "requiredStages": [
2026-06-21T01:36:45.2060625Z         "impl",
2026-06-21T01:36:45.2060725Z         "unit"
2026-06-21T01:36:45.2060824Z       ],
2026-06-21T01:36:45.2060923Z       "stages": {
2026-06-21T01:36:45.2061028Z         "doc": {
2026-06-21T01:36:45.2061230Z           "complete": false,
2026-06-21T01:36:45.2061336Z           "evidence": []
2026-06-21T01:36:45.2061427Z         },
2026-06-21T01:36:45.2061526Z         "impl": {
2026-06-21T01:36:45.2061637Z           "complete": true,
2026-06-21T01:36:45.2061742Z           "evidence": [
2026-06-21T01:36:45.2061846Z             {
2026-06-21T01:36:45.2061976Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2062080Z               "line": 3835
2026-06-21T01:36:45.2062180Z             },
2026-06-21T01:36:45.2062271Z             {
2026-06-21T01:36:45.2062390Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2062591Z               "line": 3864
2026-06-21T01:36:45.2062695Z             },
2026-06-21T01:36:45.2062790Z             {
2026-06-21T01:36:45.2062896Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2063010Z               "line": 3881
2026-06-21T01:36:45.2063105Z             },
2026-06-21T01:36:45.2063201Z             {
2026-06-21T01:36:45.2063325Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2063423Z               "line": 3904
2026-06-21T01:36:45.2063514Z             },
2026-06-21T01:36:45.2063614Z             {
2026-06-21T01:36:45.2063736Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2063840Z               "line": 4318
2026-06-21T01:36:45.2063946Z             }
2026-06-21T01:36:45.2064041Z           ]
2026-06-21T01:36:45.2064141Z         },
2026-06-21T01:36:45.2064251Z         "int": {
2026-06-21T01:36:45.2064351Z           "complete": false,
2026-06-21T01:36:45.2064460Z           "evidence": []
2026-06-21T01:36:45.2064556Z         },
2026-06-21T01:36:45.2064666Z         "unit": {
2026-06-21T01:36:45.2064770Z           "complete": true,
2026-06-21T01:36:45.2064871Z           "evidence": [
2026-06-21T01:36:45.2064980Z             {
2026-06-21T01:36:45.2065095Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2065191Z               "line": 10225
2026-06-21T01:36:45.2065290Z             },
2026-06-21T01:36:45.2065390Z             {
2026-06-21T01:36:45.2065496Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2065591Z               "line": 10241
2026-06-21T01:36:45.2065691Z             }
2026-06-21T01:36:45.2065792Z           ]
2026-06-21T01:36:45.2065896Z         }
2026-06-21T01:36:45.2065996Z       }
2026-06-21T01:36:45.2066092Z     },
2026-06-21T01:36:45.2066192Z     {
2026-06-21T01:36:45.2066304Z       "id": "REQ-TERM-1",
2026-06-21T01:36:45.2066492Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T01:36:45.2066596Z       "requiredStages": [
2026-06-21T01:36:45.2066700Z         "impl",
2026-06-21T01:36:45.2066802Z         "unit"
2026-06-21T01:36:45.2066897Z       ],
2026-06-21T01:36:45.2066986Z       "stages": {
2026-06-21T01:36:45.2067078Z         "doc": {
2026-06-21T01:36:45.2067187Z           "complete": false,
2026-06-21T01:36:45.2067291Z           "evidence": []
2026-06-21T01:36:45.2067393Z         },
2026-06-21T01:36:45.2067492Z         "impl": {
2026-06-21T01:36:45.2067597Z           "complete": true,
2026-06-21T01:36:45.2067703Z           "evidence": [
2026-06-21T01:36:45.2067798Z             {
2026-06-21T01:36:45.2067926Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:36:45.2068032Z               "line": 59
2026-06-21T01:36:45.2068132Z             },
2026-06-21T01:36:45.2068231Z             {
2026-06-21T01:36:45.2068356Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T01:36:45.2068451Z               "line": 234
2026-06-21T01:36:45.2068550Z             },
2026-06-21T01:36:45.2068655Z             {
2026-06-21T01:36:45.2068778Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T01:36:45.2068891Z               "line": 100
2026-06-21T01:36:45.2069058Z             }
2026-06-21T01:36:45.2069153Z           ]
2026-06-21T01:36:45.2069238Z         },
2026-06-21T01:36:45.2069378Z         "int": {
2026-06-21T01:36:45.2069482Z           "complete": false,
2026-06-21T01:36:45.2069811Z           "evidence": []
2026-06-21T01:36:45.2069906Z         },
2026-06-21T01:36:45.2070012Z         "unit": {
2026-06-21T01:36:45.2070135Z           "complete": true,
2026-06-21T01:36:45.2070235Z           "evidence": [
2026-06-21T01:36:45.2070387Z             {
2026-06-21T01:36:45.2070560Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T01:36:45.2070656Z               "line": 24
2026-06-21T01:36:45.2070760Z             },
2026-06-21T01:36:45.2070846Z             {
2026-06-21T01:36:45.2070976Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T01:36:45.2071074Z               "line": 56
2026-06-21T01:36:45.2071175Z             }
2026-06-21T01:36:45.2071369Z           ]
2026-06-21T01:36:45.2071464Z         }
2026-06-21T01:36:45.2071564Z       }
2026-06-21T01:36:45.2071663Z     },
2026-06-21T01:36:45.2071767Z     {
2026-06-21T01:36:45.2071858Z       "id": "REQ-TERM-2",
2026-06-21T01:36:45.2072058Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T01:36:45.2072168Z       "requiredStages": [
2026-06-21T01:36:45.2072264Z         "impl",
2026-06-21T01:36:45.2072372Z         "unit"
2026-06-21T01:36:45.2072468Z       ],
2026-06-21T01:36:45.2072574Z       "stages": {
2026-06-21T01:36:45.2072673Z         "doc": {
2026-06-21T01:36:45.2072783Z           "complete": false,
2026-06-21T01:36:45.2072884Z           "evidence": []
2026-06-21T01:36:45.2072974Z         },
2026-06-21T01:36:45.2073083Z         "impl": {
2026-06-21T01:36:45.2073180Z           "complete": true,
2026-06-21T01:36:45.2073283Z           "evidence": [
2026-06-21T01:36:45.2073379Z             {
2026-06-21T01:36:45.2073518Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T01:36:45.2073626Z               "line": 117
2026-06-21T01:36:45.2073722Z             },
2026-06-21T01:36:45.2073819Z             {
2026-06-21T01:36:45.2073946Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T01:36:45.2074050Z               "line": 127
2026-06-21T01:36:45.2074155Z             }
2026-06-21T01:36:45.2074253Z           ]
2026-06-21T01:36:45.2074357Z         },
2026-06-21T01:36:45.2074454Z         "int": {
2026-06-21T01:36:45.2074554Z           "complete": false,
2026-06-21T01:36:45.2074649Z           "evidence": []
2026-06-21T01:36:45.2074744Z         },
2026-06-21T01:36:45.2074845Z         "unit": {
2026-06-21T01:36:45.2074954Z           "complete": true,
2026-06-21T01:36:45.2075064Z           "evidence": [
2026-06-21T01:36:45.2075164Z             {
2026-06-21T01:36:45.2075297Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T01:36:45.2075398Z               "line": 46
2026-06-21T01:36:45.2075502Z             },
2026-06-21T01:36:45.2075602Z             {
2026-06-21T01:36:45.2075737Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T01:36:45.2075841Z               "line": 77
2026-06-21T01:36:45.2075941Z             }
2026-06-21T01:36:45.2076047Z           ]
2026-06-21T01:36:45.2076141Z         }
2026-06-21T01:36:45.2076246Z       }
2026-06-21T01:36:45.2076347Z     },
2026-06-21T01:36:45.2076446Z     {
2026-06-21T01:36:45.2076556Z       "id": "REQ-TERM-3",
2026-06-21T01:36:45.2076705Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T01:36:45.2076813Z       "requiredStages": [
2026-06-21T01:36:45.2076907Z         "impl",
2026-06-21T01:36:45.2077013Z         "unit"
2026-06-21T01:36:45.2077104Z       ],
2026-06-21T01:36:45.2077208Z       "stages": {
2026-06-21T01:36:45.2077314Z         "doc": {
2026-06-21T01:36:45.2077418Z           "complete": false,
2026-06-21T01:36:45.2077523Z           "evidence": []
2026-06-21T01:36:45.2077619Z         },
2026-06-21T01:36:45.2077724Z         "impl": {
2026-06-21T01:36:45.2077823Z           "complete": true,
2026-06-21T01:36:45.2077928Z           "evidence": [
2026-06-21T01:36:45.2078034Z             {
2026-06-21T01:36:45.2078162Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T01:36:45.2078268Z               "line": 71
2026-06-21T01:36:45.2078363Z             }
2026-06-21T01:36:45.2078534Z           ]
2026-06-21T01:36:45.2078625Z         },
2026-06-21T01:36:45.2078724Z         "int": {
2026-06-21T01:36:45.2078824Z           "complete": false,
2026-06-21T01:36:45.2078926Z           "evidence": []
2026-06-21T01:36:45.2079119Z         },
2026-06-21T01:36:45.2079210Z         "unit": {
2026-06-21T01:36:45.2079314Z           "complete": true,
2026-06-21T01:36:45.2079417Z           "evidence": [
2026-06-21T01:36:45.2079522Z             {
2026-06-21T01:36:45.2079657Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T01:36:45.2079750Z               "line": 37
2026-06-21T01:36:45.2079851Z             },
2026-06-21T01:36:45.2080042Z             {
2026-06-21T01:36:45.2082814Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T01:36:45.2082947Z               "line": 67
2026-06-21T01:36:45.2083053Z             }
2026-06-21T01:36:45.2083157Z           ]
2026-06-21T01:36:45.2083247Z         }
2026-06-21T01:36:45.2083348Z       }
2026-06-21T01:36:45.2083449Z     },
2026-06-21T01:36:45.2083549Z     {
2026-06-21T01:36:45.2083657Z       "id": "REQ-TERM-4",
2026-06-21T01:36:45.2084162Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T01:36:45.2084278Z       "requiredStages": [
2026-06-21T01:36:45.2084379Z         "impl",
2026-06-21T01:36:45.2084487Z         "unit",
2026-06-21T01:36:45.2084586Z         "int"
2026-06-21T01:36:45.2084682Z       ],
2026-06-21T01:36:45.2084785Z       "stages": {
2026-06-21T01:36:45.2084889Z         "doc": {
2026-06-21T01:36:45.2085004Z           "complete": false,
2026-06-21T01:36:45.2085114Z           "evidence": []
2026-06-21T01:36:45.2085213Z         },
2026-06-21T01:36:45.2085309Z         "impl": {
2026-06-21T01:36:45.2085414Z           "complete": true,
2026-06-21T01:36:45.2085518Z           "evidence": [
2026-06-21T01:36:45.2085610Z             {
2026-06-21T01:36:45.2085753Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2085857Z               "line": 37
2026-06-21T01:36:45.2085958Z             },
2026-06-21T01:36:45.2086057Z             {
2026-06-21T01:36:45.2086200Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2086302Z               "line": 25
2026-06-21T01:36:45.2086406Z             },
2026-06-21T01:36:45.2086506Z             {
2026-06-21T01:36:45.2086640Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2086749Z               "line": 114
2026-06-21T01:36:45.2086839Z             },
2026-06-21T01:36:45.2086941Z             {
2026-06-21T01:36:45.2087078Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2087179Z               "line": 267
2026-06-21T01:36:45.2087279Z             },
2026-06-21T01:36:45.2087377Z             {
2026-06-21T01:36:45.2087516Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2087612Z               "line": 289
2026-06-21T01:36:45.2087716Z             },
2026-06-21T01:36:45.2087811Z             {
2026-06-21T01:36:45.2087941Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2088040Z               "line": 307
2026-06-21T01:36:45.2088140Z             },
2026-06-21T01:36:45.2088246Z             {
2026-06-21T01:36:45.2088369Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:36:45.2088474Z               "line": 33
2026-06-21T01:36:45.2088579Z             },
2026-06-21T01:36:45.2088679Z             {
2026-06-21T01:36:45.2088823Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2088927Z               "line": 52
2026-06-21T01:36:45.2089118Z             },
2026-06-21T01:36:45.2089218Z             {
2026-06-21T01:36:45.2089351Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2089457Z               "line": 180
2026-06-21T01:36:45.2089547Z             },
2026-06-21T01:36:45.2089642Z             {
2026-06-21T01:36:45.2089907Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2090015Z               "line": 190
2026-06-21T01:36:45.2090116Z             },
2026-06-21T01:36:45.2090212Z             {
2026-06-21T01:36:45.2090349Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2090455Z               "line": 250
2026-06-21T01:36:45.2090560Z             },
2026-06-21T01:36:45.2090649Z             {
2026-06-21T01:36:45.2090789Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.2090889Z               "line": 284
2026-06-21T01:36:45.2090992Z             },
2026-06-21T01:36:45.2091084Z             {
2026-06-21T01:36:45.2091307Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.2091409Z               "line": 295
2026-06-21T01:36:45.2091508Z             },
2026-06-21T01:36:45.2091603Z             {
2026-06-21T01:36:45.2091719Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2091818Z               "line": 1193
2026-06-21T01:36:45.2091923Z             }
2026-06-21T01:36:45.2092020Z           ]
2026-06-21T01:36:45.2092124Z         },
2026-06-21T01:36:45.2092219Z         "int": {
2026-06-21T01:36:45.2092324Z           "complete": true,
2026-06-21T01:36:45.2092425Z           "evidence": [
2026-06-21T01:36:45.2092513Z             {
2026-06-21T01:36:45.2092671Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T01:36:45.2092802Z               "line": 18
2026-06-21T01:36:45.2092911Z             }
2026-06-21T01:36:45.2092997Z           ]
2026-06-21T01:36:45.2093098Z         },
2026-06-21T01:36:45.2093202Z         "unit": {
2026-06-21T01:36:45.2093317Z           "complete": true,
2026-06-21T01:36:45.2093417Z           "evidence": [
2026-06-21T01:36:45.2093512Z             {
2026-06-21T01:36:45.2093637Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2093741Z               "line": 364
2026-06-21T01:36:45.2093845Z             },
2026-06-21T01:36:45.2093942Z             {
2026-06-21T01:36:45.2094079Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2094189Z               "line": 416
2026-06-21T01:36:45.2094290Z             },
2026-06-21T01:36:45.2094380Z             {
2026-06-21T01:36:45.2094504Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2094605Z               "line": 426
2026-06-21T01:36:45.2094700Z             },
2026-06-21T01:36:45.2094799Z             {
2026-06-21T01:36:45.2094939Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2095042Z               "line": 436
2026-06-21T01:36:45.2095137Z             },
2026-06-21T01:36:45.2095237Z             {
2026-06-21T01:36:45.2095378Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2095473Z               "line": 456
2026-06-21T01:36:45.2095578Z             },
2026-06-21T01:36:45.2095675Z             {
2026-06-21T01:36:45.2095802Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2095908Z               "line": 478
2026-06-21T01:36:45.2096003Z             },
2026-06-21T01:36:45.2096107Z             {
2026-06-21T01:36:45.2096237Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2096346Z               "line": 491
2026-06-21T01:36:45.2096441Z             },
2026-06-21T01:36:45.2096538Z             {
2026-06-21T01:36:45.2096670Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T01:36:45.2096794Z               "line": 502
2026-06-21T01:36:45.2096900Z             },
2026-06-21T01:36:45.2096999Z             {
2026-06-21T01:36:45.2097119Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:36:45.2097229Z               "line": 108
2026-06-21T01:36:45.2097323Z             },
2026-06-21T01:36:45.2097424Z             {
2026-06-21T01:36:45.2097553Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T01:36:45.2097652Z               "line": 119
2026-06-21T01:36:45.2097754Z             },
2026-06-21T01:36:45.2097923Z             {
2026-06-21T01:36:45.2098046Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T01:36:45.2098148Z               "line": 127
2026-06-21T01:36:45.2098252Z             },
2026-06-21T01:36:45.2098352Z             {
2026-06-21T01:36:45.2098491Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2098600Z               "line": 474
2026-06-21T01:36:45.2098685Z             },
2026-06-21T01:36:45.2098792Z             {
2026-06-21T01:36:45.2098920Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2099097Z               "line": 501
2026-06-21T01:36:45.2099187Z             },
2026-06-21T01:36:45.2099388Z             {
2026-06-21T01:36:45.2099525Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2099625Z               "line": 520
2026-06-21T01:36:45.2099717Z             },
2026-06-21T01:36:45.2099807Z             {
2026-06-21T01:36:45.2099945Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2100052Z               "line": 535
2026-06-21T01:36:45.2100154Z             },
2026-06-21T01:36:45.2100258Z             {
2026-06-21T01:36:45.2100383Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2100486Z               "line": 561
2026-06-21T01:36:45.2100585Z             },
2026-06-21T01:36:45.2100686Z             {
2026-06-21T01:36:45.2100814Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2100909Z               "line": 581
2026-06-21T01:36:45.2101015Z             },
2026-06-21T01:36:45.2101115Z             {
2026-06-21T01:36:45.2101247Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2101354Z               "line": 591
2026-06-21T01:36:45.2101458Z             },
2026-06-21T01:36:45.2101557Z             {
2026-06-21T01:36:45.2101692Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2101796Z               "line": 683
2026-06-21T01:36:45.2101892Z             },
2026-06-21T01:36:45.2102002Z             {
2026-06-21T01:36:45.2102135Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.2102245Z               "line": 885
2026-06-21T01:36:45.2102345Z             },
2026-06-21T01:36:45.2102445Z             {
2026-06-21T01:36:45.2102565Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2102670Z               "line": 9792
2026-06-21T01:36:45.2102769Z             }
2026-06-21T01:36:45.2102856Z           ]
2026-06-21T01:36:45.2102961Z         }
2026-06-21T01:36:45.2103065Z       }
2026-06-21T01:36:45.2103154Z     },
2026-06-21T01:36:45.2103255Z     {
2026-06-21T01:36:45.2103358Z       "id": "REQ-TERM-5",
2026-06-21T01:36:45.2104940Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T01:36:45.2105049Z       "requiredStages": [
2026-06-21T01:36:45.2105151Z         "doc",
2026-06-21T01:36:45.2105251Z         "impl",
2026-06-21T01:36:45.2105346Z         "unit",
2026-06-21T01:36:45.2105447Z         "int"
2026-06-21T01:36:45.2105542Z       ],
2026-06-21T01:36:45.2105645Z       "stages": {
2026-06-21T01:36:45.2105749Z         "doc": {
2026-06-21T01:36:45.2105855Z           "complete": true,
2026-06-21T01:36:45.2105962Z           "evidence": [
2026-06-21T01:36:45.2106061Z             {
2026-06-21T01:36:45.2106191Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.2106291Z               "line": 234
2026-06-21T01:36:45.2106396Z             }
2026-06-21T01:36:45.2106497Z           ]
2026-06-21T01:36:45.2106710Z         },
2026-06-21T01:36:45.2106811Z         "impl": {
2026-06-21T01:36:45.2106916Z           "complete": true,
2026-06-21T01:36:45.2107025Z           "evidence": [
2026-06-21T01:36:45.2107122Z             {
2026-06-21T01:36:45.2107259Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2107364Z               "line": 75
2026-06-21T01:36:45.2107451Z             },
2026-06-21T01:36:45.2107550Z             {
2026-06-21T01:36:45.2107684Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2107784Z               "line": 131
2026-06-21T01:36:45.2107884Z             },
2026-06-21T01:36:45.2108052Z             {
2026-06-21T01:36:45.2108174Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2108265Z               "line": 22
2026-06-21T01:36:45.2108371Z             },
2026-06-21T01:36:45.2108456Z             {
2026-06-21T01:36:45.2108579Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2108689Z               "line": 87
2026-06-21T01:36:45.2108785Z             },
2026-06-21T01:36:45.2108874Z             {
2026-06-21T01:36:45.2109080Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T01:36:45.2109189Z               "line": 30
2026-06-21T01:36:45.2109280Z             },
2026-06-21T01:36:45.2109366Z             {
2026-06-21T01:36:45.2109508Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2109614Z               "line": 103
2026-06-21T01:36:45.2109733Z             },
2026-06-21T01:36:45.2109842Z             {
2026-06-21T01:36:45.2109967Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2110066Z               "line": 167
2026-06-21T01:36:45.2110166Z             },
2026-06-21T01:36:45.2110263Z             {
2026-06-21T01:36:45.2110395Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2110495Z               "line": 434
2026-06-21T01:36:45.2110592Z             },
2026-06-21T01:36:45.2110695Z             {
2026-06-21T01:36:45.2110818Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2110919Z               "line": 5650
2026-06-21T01:36:45.2111022Z             },
2026-06-21T01:36:45.2111122Z             {
2026-06-21T01:36:45.2111241Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2111342Z               "line": 5957
2026-06-21T01:36:45.2111441Z             }
2026-06-21T01:36:45.2111527Z           ]
2026-06-21T01:36:45.2111618Z         },
2026-06-21T01:36:45.2111718Z         "int": {
2026-06-21T01:36:45.2111807Z           "complete": true,
2026-06-21T01:36:45.2111918Z           "evidence": [
2026-06-21T01:36:45.2112018Z             {
2026-06-21T01:36:45.2112191Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T01:36:45.2112295Z               "line": 17
2026-06-21T01:36:45.2112399Z             }
2026-06-21T01:36:45.2112505Z           ]
2026-06-21T01:36:45.2112600Z         },
2026-06-21T01:36:45.2112700Z         "unit": {
2026-06-21T01:36:45.2112805Z           "complete": true,
2026-06-21T01:36:45.2112905Z           "evidence": [
2026-06-21T01:36:45.2112991Z             {
2026-06-21T01:36:45.2113125Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2113239Z               "line": 375
2026-06-21T01:36:45.2113329Z             },
2026-06-21T01:36:45.2113426Z             {
2026-06-21T01:36:45.2113554Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2113662Z               "line": 162
2026-06-21T01:36:45.2113752Z             },
2026-06-21T01:36:45.2113852Z             {
2026-06-21T01:36:45.2113989Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2114098Z               "line": 179
2026-06-21T01:36:45.2114195Z             },
2026-06-21T01:36:45.2114289Z             {
2026-06-21T01:36:45.2114413Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2114509Z               "line": 201
2026-06-21T01:36:45.2114608Z             },
2026-06-21T01:36:45.2114805Z             {
2026-06-21T01:36:45.2114933Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2115029Z               "line": 212
2026-06-21T01:36:45.2115129Z             },
2026-06-21T01:36:45.2115229Z             {
2026-06-21T01:36:45.2115353Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T01:36:45.2115463Z               "line": 223
2026-06-21T01:36:45.2115562Z             },
2026-06-21T01:36:45.2115663Z             {
2026-06-21T01:36:45.2115806Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2115911Z               "line": 1525
2026-06-21T01:36:45.2116017Z             },
2026-06-21T01:36:45.2116205Z             {
2026-06-21T01:36:45.2116329Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2116433Z               "line": 1568
2026-06-21T01:36:45.2116522Z             },
2026-06-21T01:36:45.2116626Z             {
2026-06-21T01:36:45.2116752Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2116860Z               "line": 606
2026-06-21T01:36:45.2116965Z             },
2026-06-21T01:36:45.2117062Z             {
2026-06-21T01:36:45.2117189Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2117290Z               "line": 634
2026-06-21T01:36:45.2117395Z             },
2026-06-21T01:36:45.2117490Z             {
2026-06-21T01:36:45.2117620Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2117720Z               "line": 646
2026-06-21T01:36:45.2117819Z             },
2026-06-21T01:36:45.2117914Z             {
2026-06-21T01:36:45.2118044Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2118153Z               "line": 669
2026-06-21T01:36:45.2118254Z             },
2026-06-21T01:36:45.2118354Z             {
2026-06-21T01:36:45.2118468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2118569Z               "line": 8503
2026-06-21T01:36:45.2118669Z             },
2026-06-21T01:36:45.2118768Z             {
2026-06-21T01:36:45.2118889Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2119129Z               "line": 8561
2026-06-21T01:36:45.2119230Z             }
2026-06-21T01:36:45.2119331Z           ]
2026-06-21T01:36:45.2119429Z         }
2026-06-21T01:36:45.2119540Z       }
2026-06-21T01:36:45.2119635Z     },
2026-06-21T01:36:45.2119739Z     {
2026-06-21T01:36:45.2119845Z       "id": "REQ-TERM-6",
2026-06-21T01:36:45.2121003Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T01:36:45.2121118Z       "requiredStages": [
2026-06-21T01:36:45.2121219Z         "impl",
2026-06-21T01:36:45.2121322Z         "unit",
2026-06-21T01:36:45.2121412Z         "int"
2026-06-21T01:36:45.2121517Z       ],
2026-06-21T01:36:45.2121620Z       "stages": {
2026-06-21T01:36:45.2121719Z         "doc": {
2026-06-21T01:36:45.2121835Z           "complete": false,
2026-06-21T01:36:45.2121930Z           "evidence": []
2026-06-21T01:36:45.2122034Z         },
2026-06-21T01:36:45.2122140Z         "impl": {
2026-06-21T01:36:45.2122236Z           "complete": true,
2026-06-21T01:36:45.2122344Z           "evidence": [
2026-06-21T01:36:45.2122441Z             {
2026-06-21T01:36:45.2122569Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2122669Z               "line": 132
2026-06-21T01:36:45.2122775Z             },
2026-06-21T01:36:45.2122869Z             {
2026-06-21T01:36:45.2122998Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2123104Z               "line": 187
2026-06-21T01:36:45.2123193Z             },
2026-06-21T01:36:45.2123293Z             {
2026-06-21T01:36:45.2123522Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.2123622Z               "line": 17
2026-06-21T01:36:45.2123724Z             },
2026-06-21T01:36:45.2123818Z             {
2026-06-21T01:36:45.2123952Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.2124048Z               "line": 104
2026-06-21T01:36:45.2124151Z             },
2026-06-21T01:36:45.2124250Z             {
2026-06-21T01:36:45.2124399Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2124506Z               "line": 319
2026-06-21T01:36:45.2124596Z             },
2026-06-21T01:36:45.2124692Z             {
2026-06-21T01:36:45.2124910Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2125026Z               "line": 396
2026-06-21T01:36:45.2125117Z             }
2026-06-21T01:36:45.2125216Z           ]
2026-06-21T01:36:45.2125323Z         },
2026-06-21T01:36:45.2125422Z         "int": {
2026-06-21T01:36:45.2125526Z           "complete": true,
2026-06-21T01:36:45.2125632Z           "evidence": [
2026-06-21T01:36:45.2125736Z             {
2026-06-21T01:36:45.2125898Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T01:36:45.2125994Z               "line": 18
2026-06-21T01:36:45.2126103Z             }
2026-06-21T01:36:45.2126198Z           ]
2026-06-21T01:36:45.2126300Z         },
2026-06-21T01:36:45.2126394Z         "unit": {
2026-06-21T01:36:45.2126499Z           "complete": true,
2026-06-21T01:36:45.2126601Z           "evidence": [
2026-06-21T01:36:45.2126704Z             {
2026-06-21T01:36:45.2126831Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.2126937Z               "line": 135
2026-06-21T01:36:45.2127035Z             },
2026-06-21T01:36:45.2127134Z             {
2026-06-21T01:36:45.2127263Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.2127369Z               "line": 150
2026-06-21T01:36:45.2127473Z             },
2026-06-21T01:36:45.2127569Z             {
2026-06-21T01:36:45.2127698Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.2127812Z               "line": 166
2026-06-21T01:36:45.2127898Z             },
2026-06-21T01:36:45.2127993Z             {
2026-06-21T01:36:45.2128131Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T01:36:45.2128232Z               "line": 257
2026-06-21T01:36:45.2128331Z             },
2026-06-21T01:36:45.2128431Z             {
2026-06-21T01:36:45.2128575Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2128675Z               "line": 738
2026-06-21T01:36:45.2128775Z             },
2026-06-21T01:36:45.2128876Z             {
2026-06-21T01:36:45.2129100Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2129205Z               "line": 759
2026-06-21T01:36:45.2129294Z             },
2026-06-21T01:36:45.2129395Z             {
2026-06-21T01:36:45.2129525Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T01:36:45.2129633Z               "line": 726
2026-06-21T01:36:45.2129737Z             }
2026-06-21T01:36:45.2129823Z           ]
2026-06-21T01:36:45.2129929Z         }
2026-06-21T01:36:45.2130032Z       }
2026-06-21T01:36:45.2130138Z     },
2026-06-21T01:36:45.2130234Z     {
2026-06-21T01:36:45.2130337Z       "id": "REQ-TERM-7",
2026-06-21T01:36:45.2131529Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T01:36:45.2131645Z       "requiredStages": [
2026-06-21T01:36:45.2131751Z         "impl",
2026-06-21T01:36:45.2131849Z         "unit",
2026-06-21T01:36:45.2131953Z         "int"
2026-06-21T01:36:45.2132152Z       ],
2026-06-21T01:36:45.2132237Z       "stages": {
2026-06-21T01:36:45.2132342Z         "doc": {
2026-06-21T01:36:45.2132438Z           "complete": false,
2026-06-21T01:36:45.2132542Z           "evidence": []
2026-06-21T01:36:45.2132633Z         },
2026-06-21T01:36:45.2132738Z         "impl": {
2026-06-21T01:36:45.2132842Z           "complete": true,
2026-06-21T01:36:45.2132947Z           "evidence": [
2026-06-21T01:36:45.2133053Z             {
2026-06-21T01:36:45.2133176Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2133282Z               "line": 133
2026-06-21T01:36:45.2133373Z             },
2026-06-21T01:36:45.2133577Z             {
2026-06-21T01:36:45.2133711Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2133806Z               "line": 326
2026-06-21T01:36:45.2133896Z             },
2026-06-21T01:36:45.2133988Z             {
2026-06-21T01:36:45.2134116Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:36:45.2134226Z               "line": 15
2026-06-21T01:36:45.2134327Z             },
2026-06-21T01:36:45.2134430Z             {
2026-06-21T01:36:45.2134556Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:36:45.2134660Z               "line": 32
2026-06-21T01:36:45.2134759Z             },
2026-06-21T01:36:45.2134863Z             {
2026-06-21T01:36:45.2134982Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:36:45.2135090Z               "line": 49
2026-06-21T01:36:45.2135185Z             },
2026-06-21T01:36:45.2135272Z             {
2026-06-21T01:36:45.2135414Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2135519Z               "line": 286
2026-06-21T01:36:45.2135625Z             },
2026-06-21T01:36:45.2135719Z             {
2026-06-21T01:36:45.2135848Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2135953Z               "line": 320
2026-06-21T01:36:45.2136039Z             }
2026-06-21T01:36:45.2136134Z           ]
2026-06-21T01:36:45.2136231Z         },
2026-06-21T01:36:45.2136330Z         "int": {
2026-06-21T01:36:45.2136439Z           "complete": true,
2026-06-21T01:36:45.2136550Z           "evidence": [
2026-06-21T01:36:45.2136654Z             {
2026-06-21T01:36:45.2136807Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T01:36:45.2136903Z               "line": 19
2026-06-21T01:36:45.2136992Z             }
2026-06-21T01:36:45.2137098Z           ]
2026-06-21T01:36:45.2137194Z         },
2026-06-21T01:36:45.2137292Z         "unit": {
2026-06-21T01:36:45.2137391Z           "complete": true,
2026-06-21T01:36:45.2137497Z           "evidence": [
2026-06-21T01:36:45.2137605Z             {
2026-06-21T01:36:45.2137732Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2137838Z               "line": 455
2026-06-21T01:36:45.2137943Z             },
2026-06-21T01:36:45.2138042Z             {
2026-06-21T01:36:45.2138172Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T01:36:45.2138263Z               "line": 568
2026-06-21T01:36:45.2138362Z             },
2026-06-21T01:36:45.2138463Z             {
2026-06-21T01:36:45.2138596Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:36:45.2138696Z               "line": 58
2026-06-21T01:36:45.2138792Z             },
2026-06-21T01:36:45.2138882Z             {
2026-06-21T01:36:45.2139084Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:36:45.2139183Z               "line": 77
2026-06-21T01:36:45.2139283Z             },
2026-06-21T01:36:45.2139384Z             {
2026-06-21T01:36:45.2139507Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T01:36:45.2139612Z               "line": 87
2026-06-21T01:36:45.2139708Z             },
2026-06-21T01:36:45.2139807Z             {
2026-06-21T01:36:45.2139941Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T01:36:45.2140042Z               "line": 94
2026-06-21T01:36:45.2140141Z             },
2026-06-21T01:36:45.2140355Z             {
2026-06-21T01:36:45.2140489Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2140592Z               "line": 691
2026-06-21T01:36:45.2140689Z             },
2026-06-21T01:36:45.2140779Z             {
2026-06-21T01:36:45.2140912Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T01:36:45.2141023Z               "line": 716
2026-06-21T01:36:45.2141123Z             }
2026-06-21T01:36:45.2141222Z           ]
2026-06-21T01:36:45.2141319Z         }
2026-06-21T01:36:45.2141413Z       }
2026-06-21T01:36:45.2141513Z     },
2026-06-21T01:36:45.2141609Z     {
2026-06-21T01:36:45.2141814Z       "id": "REQ-UPD-1",
2026-06-21T01:36:45.2141948Z       "title": "Peer-propagated update over P2P",
2026-06-21T01:36:45.2142048Z       "requiredStages": [
2026-06-21T01:36:45.2142152Z         "impl",
2026-06-21T01:36:45.2142253Z         "unit",
2026-06-21T01:36:45.2142353Z         "int"
2026-06-21T01:36:45.2142451Z       ],
2026-06-21T01:36:45.2142551Z       "stages": {
2026-06-21T01:36:45.2142652Z         "doc": {
2026-06-21T01:36:45.2142750Z           "complete": false,
2026-06-21T01:36:45.2142859Z           "evidence": []
2026-06-21T01:36:45.2142955Z         },
2026-06-21T01:36:45.2143055Z         "impl": {
2026-06-21T01:36:45.2143150Z           "complete": true,
2026-06-21T01:36:45.2143250Z           "evidence": [
2026-06-21T01:36:45.2143351Z             {
2026-06-21T01:36:45.2143479Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2143585Z               "line": 28
2026-06-21T01:36:45.2143685Z             },
2026-06-21T01:36:45.2143784Z             {
2026-06-21T01:36:45.2143924Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2144028Z               "line": 103
2026-06-21T01:36:45.2144128Z             },
2026-06-21T01:36:45.2144219Z             {
2026-06-21T01:36:45.2144357Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2144452Z               "line": 342
2026-06-21T01:36:45.2144558Z             },
2026-06-21T01:36:45.2144651Z             {
2026-06-21T01:36:45.2144796Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2144906Z               "line": 22
2026-06-21T01:36:45.2145005Z             },
2026-06-21T01:36:45.2145106Z             {
2026-06-21T01:36:45.2145239Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2145333Z               "line": 207
2026-06-21T01:36:45.2145423Z             },
2026-06-21T01:36:45.2145524Z             {
2026-06-21T01:36:45.2145655Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2145755Z               "line": 283
2026-06-21T01:36:45.2145860Z             },
2026-06-21T01:36:45.2145955Z             {
2026-06-21T01:36:45.2146084Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2146189Z               "line": 340
2026-06-21T01:36:45.2146284Z             },
2026-06-21T01:36:45.2146394Z             {
2026-06-21T01:36:45.2146523Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.2146632Z               "line": 37
2026-06-21T01:36:45.2146728Z             }
2026-06-21T01:36:45.2146828Z           ]
2026-06-21T01:36:45.2146918Z         },
2026-06-21T01:36:45.2147013Z         "int": {
2026-06-21T01:36:45.2147120Z           "complete": true,
2026-06-21T01:36:45.2147218Z           "evidence": [
2026-06-21T01:36:45.2147324Z             {
2026-06-21T01:36:45.2147463Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T01:36:45.2147567Z               "line": 207
2026-06-21T01:36:45.2147663Z             },
2026-06-21T01:36:45.2147764Z             {
2026-06-21T01:36:45.2147910Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T01:36:45.2148014Z               "line": 1082
2026-06-21T01:36:45.2148113Z             }
2026-06-21T01:36:45.2148203Z           ]
2026-06-21T01:36:45.2148307Z         },
2026-06-21T01:36:45.2148403Z         "unit": {
2026-06-21T01:36:45.2148593Z           "complete": true,
2026-06-21T01:36:45.2148699Z           "evidence": [
2026-06-21T01:36:45.2148794Z             {
2026-06-21T01:36:45.2148927Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2149114Z               "line": 490
2026-06-21T01:36:45.2149218Z             },
2026-06-21T01:36:45.2149315Z             {
2026-06-21T01:36:45.2149438Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2149547Z               "line": 616
2026-06-21T01:36:45.2149639Z             },
2026-06-21T01:36:45.2149738Z             {
2026-06-21T01:36:45.2149881Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:36:45.2150086Z               "line": 277
2026-06-21T01:36:45.2150177Z             },
2026-06-21T01:36:45.2150268Z             {
2026-06-21T01:36:45.2150410Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.2150506Z               "line": 124
2026-06-21T01:36:45.2150612Z             },
2026-06-21T01:36:45.2150710Z             {
2026-06-21T01:36:45.2150847Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.2150948Z               "line": 200
2026-06-21T01:36:45.2151049Z             }
2026-06-21T01:36:45.2151148Z           ]
2026-06-21T01:36:45.2151244Z         }
2026-06-21T01:36:45.2151339Z       }
2026-06-21T01:36:45.2151434Z     },
2026-06-21T01:36:45.2151525Z     {
2026-06-21T01:36:45.2151626Z       "id": "REQ-UPD-2",
2026-06-21T01:36:45.2151791Z       "title": "All binaries signature-verified before handoff",
2026-06-21T01:36:45.2151902Z       "requiredStages": [
2026-06-21T01:36:45.2152002Z         "impl",
2026-06-21T01:36:45.2152106Z         "unit"
2026-06-21T01:36:45.2152203Z       ],
2026-06-21T01:36:45.2152302Z       "stages": {
2026-06-21T01:36:45.2152402Z         "doc": {
2026-06-21T01:36:45.2152499Z           "complete": false,
2026-06-21T01:36:45.2152603Z           "evidence": []
2026-06-21T01:36:45.2152703Z         },
2026-06-21T01:36:45.2152803Z         "impl": {
2026-06-21T01:36:45.2152904Z           "complete": true,
2026-06-21T01:36:45.2153011Z           "evidence": [
2026-06-21T01:36:45.2153111Z             {
2026-06-21T01:36:45.2153249Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2153352Z               "line": 343
2026-06-21T01:36:45.2153453Z             },
2026-06-21T01:36:45.2153553Z             {
2026-06-21T01:36:45.2153686Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2153792Z               "line": 476
2026-06-21T01:36:45.2153887Z             },
2026-06-21T01:36:45.2153977Z             {
2026-06-21T01:36:45.2154102Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2154206Z               "line": 29
2026-06-21T01:36:45.2154306Z             },
2026-06-21T01:36:45.2154392Z             {
2026-06-21T01:36:45.2154521Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2154630Z               "line": 271
2026-06-21T01:36:45.2154731Z             },
2026-06-21T01:36:45.2154836Z             {
2026-06-21T01:36:45.2154959Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2155066Z               "line": 288
2026-06-21T01:36:45.2155165Z             },
2026-06-21T01:36:45.2155260Z             {
2026-06-21T01:36:45.2155395Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2155499Z               "line": 408
2026-06-21T01:36:45.2155594Z             },
2026-06-21T01:36:45.2155690Z             {
2026-06-21T01:36:45.2155823Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2155917Z               "line": 558
2026-06-21T01:36:45.2156027Z             },
2026-06-21T01:36:45.2156126Z             {
2026-06-21T01:36:45.2156258Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2156363Z               "line": 155
2026-06-21T01:36:45.2156449Z             }
2026-06-21T01:36:45.2156548Z           ]
2026-06-21T01:36:45.2156634Z         },
2026-06-21T01:36:45.2156844Z         "int": {
2026-06-21T01:36:45.2156954Z           "complete": false,
2026-06-21T01:36:45.2157060Z           "evidence": []
2026-06-21T01:36:45.2157155Z         },
2026-06-21T01:36:45.2157254Z         "unit": {
2026-06-21T01:36:45.2157365Z           "complete": true,
2026-06-21T01:36:45.2157470Z           "evidence": [
2026-06-21T01:36:45.2157574Z             {
2026-06-21T01:36:45.2157704Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2157803Z               "line": 750
2026-06-21T01:36:45.2157903Z             },
2026-06-21T01:36:45.2157990Z             {
2026-06-21T01:36:45.2160756Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2161023Z               "line": 811
2026-06-21T01:36:45.2161124Z             },
2026-06-21T01:36:45.2161233Z             {
2026-06-21T01:36:45.2161379Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2161485Z               "line": 825
2026-06-21T01:36:45.2161571Z             },
2026-06-21T01:36:45.2161680Z             {
2026-06-21T01:36:45.2161814Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2161924Z               "line": 841
2026-06-21T01:36:45.2162027Z             },
2026-06-21T01:36:45.2162120Z             {
2026-06-21T01:36:45.2162253Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2162356Z               "line": 932
2026-06-21T01:36:45.2162463Z             },
2026-06-21T01:36:45.2162567Z             {
2026-06-21T01:36:45.2162705Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2162815Z               "line": 414
2026-06-21T01:36:45.2162910Z             },
2026-06-21T01:36:45.2163010Z             {
2026-06-21T01:36:45.2163135Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2163238Z               "line": 427
2026-06-21T01:36:45.2163344Z             },
2026-06-21T01:36:45.2163436Z             {
2026-06-21T01:36:45.2163581Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:36:45.2163686Z               "line": 410
2026-06-21T01:36:45.2163786Z             }
2026-06-21T01:36:45.2163870Z           ]
2026-06-21T01:36:45.2163970Z         }
2026-06-21T01:36:45.2164070Z       }
2026-06-21T01:36:45.2164157Z     },
2026-06-21T01:36:45.2164260Z     {
2026-06-21T01:36:45.2164362Z       "id": "REQ-UPD-3",
2026-06-21T01:36:45.2164561Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T01:36:45.2164667Z       "requiredStages": [
2026-06-21T01:36:45.2164772Z         "impl",
2026-06-21T01:36:45.2164876Z         "unit",
2026-06-21T01:36:45.2164972Z         "int"
2026-06-21T01:36:45.2165077Z       ],
2026-06-21T01:36:45.2165177Z       "stages": {
2026-06-21T01:36:45.2165276Z         "doc": {
2026-06-21T01:36:45.2165382Z           "complete": false,
2026-06-21T01:36:45.2165491Z           "evidence": []
2026-06-21T01:36:45.2165591Z         },
2026-06-21T01:36:45.2165692Z         "impl": {
2026-06-21T01:36:45.2165796Z           "complete": true,
2026-06-21T01:36:45.2165906Z           "evidence": [
2026-06-21T01:36:45.2166002Z             {
2026-06-21T01:36:45.2166145Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2166255Z               "line": 40
2026-06-21T01:36:45.2166350Z             },
2026-06-21T01:36:45.2166444Z             {
2026-06-21T01:36:45.2166582Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2166691Z               "line": 87
2026-06-21T01:36:45.2166784Z             },
2026-06-21T01:36:45.2166880Z             {
2026-06-21T01:36:45.2167009Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T01:36:45.2167123Z               "line": 1042
2026-06-21T01:36:45.2167214Z             },
2026-06-21T01:36:45.2167314Z             {
2026-06-21T01:36:45.2167447Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T01:36:45.2167553Z               "line": 1843
2026-06-21T01:36:45.2167648Z             },
2026-06-21T01:36:45.2167748Z             {
2026-06-21T01:36:45.2167986Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2168086Z               "line": 26
2026-06-21T01:36:45.2168188Z             },
2026-06-21T01:36:45.2168269Z             {
2026-06-21T01:36:45.2168410Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2168512Z               "line": 114
2026-06-21T01:36:45.2168616Z             },
2026-06-21T01:36:45.2168720Z             {
2026-06-21T01:36:45.2168846Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2169044Z               "line": 246
2026-06-21T01:36:45.2169139Z             },
2026-06-21T01:36:45.2169356Z             {
2026-06-21T01:36:45.2169485Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2169586Z               "line": 2442
2026-06-21T01:36:45.2169690Z             }
2026-06-21T01:36:45.2169786Z           ]
2026-06-21T01:36:45.2169876Z         },
2026-06-21T01:36:45.2169971Z         "int": {
2026-06-21T01:36:45.2170081Z           "complete": true,
2026-06-21T01:36:45.2170186Z           "evidence": [
2026-06-21T01:36:45.2170290Z             {
2026-06-21T01:36:45.2170435Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T01:36:45.2170534Z               "line": 58
2026-06-21T01:36:45.2170633Z             }
2026-06-21T01:36:45.2170735Z           ]
2026-06-21T01:36:45.2170830Z         },
2026-06-21T01:36:45.2170930Z         "unit": {
2026-06-21T01:36:45.2171035Z           "complete": true,
2026-06-21T01:36:45.2171145Z           "evidence": [
2026-06-21T01:36:45.2171240Z             {
2026-06-21T01:36:45.2171384Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2171488Z               "line": 532
2026-06-21T01:36:45.2171592Z             },
2026-06-21T01:36:45.2171694Z             {
2026-06-21T01:36:45.2171835Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2171944Z               "line": 585
2026-06-21T01:36:45.2172035Z             },
2026-06-21T01:36:45.2172127Z             {
2026-06-21T01:36:45.2172254Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2172355Z               "line": 653
2026-06-21T01:36:45.2172455Z             },
2026-06-21T01:36:45.2172550Z             {
2026-06-21T01:36:45.2172685Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T01:36:45.2172784Z               "line": 1102
2026-06-21T01:36:45.2172879Z             },
2026-06-21T01:36:45.2172975Z             {
2026-06-21T01:36:45.2173108Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2173212Z               "line": 271
2026-06-21T01:36:45.2173304Z             },
2026-06-21T01:36:45.2173408Z             {
2026-06-21T01:36:45.2173532Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2173643Z               "line": 295
2026-06-21T01:36:45.2173737Z             },
2026-06-21T01:36:45.2173842Z             {
2026-06-21T01:36:45.2173968Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2174066Z               "line": 316
2026-06-21T01:36:45.2174165Z             },
2026-06-21T01:36:45.2174270Z             {
2026-06-21T01:36:45.2174397Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2174501Z               "line": 332
2026-06-21T01:36:45.2174602Z             }
2026-06-21T01:36:45.2174703Z           ]
2026-06-21T01:36:45.2174797Z         }
2026-06-21T01:36:45.2174897Z       }
2026-06-21T01:36:45.2174989Z     },
2026-06-21T01:36:45.2175088Z     {
2026-06-21T01:36:45.2175188Z       "id": "REQ-UPD-4",
2026-06-21T01:36:45.2175384Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T01:36:45.2175498Z       "requiredStages": [
2026-06-21T01:36:45.2175594Z         "impl",
2026-06-21T01:36:45.2175699Z         "unit"
2026-06-21T01:36:45.2175798Z       ],
2026-06-21T01:36:45.2175904Z       "stages": {
2026-06-21T01:36:45.2176004Z         "doc": {
2026-06-21T01:36:45.2176103Z           "complete": false,
2026-06-21T01:36:45.2176309Z           "evidence": []
2026-06-21T01:36:45.2176409Z         },
2026-06-21T01:36:45.2176510Z         "impl": {
2026-06-21T01:36:45.2176619Z           "complete": true,
2026-06-21T01:36:45.2176724Z           "evidence": [
2026-06-21T01:36:45.2176815Z             {
2026-06-21T01:36:45.2176952Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2177051Z               "line": 41
2026-06-21T01:36:45.2177152Z             },
2026-06-21T01:36:45.2177251Z             {
2026-06-21T01:36:45.2177387Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2177493Z               "line": 88
2026-06-21T01:36:45.2177650Z             },
2026-06-21T01:36:45.2177745Z             {
2026-06-21T01:36:45.2177880Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:36:45.2177979Z               "line": 23
2026-06-21T01:36:45.2178084Z             },
2026-06-21T01:36:45.2178171Z             {
2026-06-21T01:36:45.2178303Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:36:45.2178408Z               "line": 56
2026-06-21T01:36:45.2178504Z             },
2026-06-21T01:36:45.2178609Z             {
2026-06-21T01:36:45.2178733Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:36:45.2178833Z               "line": 77
2026-06-21T01:36:45.2178928Z             },
2026-06-21T01:36:45.2179115Z             {
2026-06-21T01:36:45.2179237Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T01:36:45.2179343Z               "line": 236
2026-06-21T01:36:45.2179444Z             },
2026-06-21T01:36:45.2179542Z             {
2026-06-21T01:36:45.2179670Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T01:36:45.2179771Z               "line": 108
2026-06-21T01:36:45.2179874Z             },
2026-06-21T01:36:45.2179973Z             {
2026-06-21T01:36:45.2180103Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.2180207Z               "line": 270
2026-06-21T01:36:45.2180307Z             },
2026-06-21T01:36:45.2180399Z             {
2026-06-21T01:36:45.2180513Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2180617Z               "line": 2441
2026-06-21T01:36:45.2180709Z             }
2026-06-21T01:36:45.2180809Z           ]
2026-06-21T01:36:45.2180912Z         },
2026-06-21T01:36:45.2181004Z         "int": {
2026-06-21T01:36:45.2181108Z           "complete": false,
2026-06-21T01:36:45.2181208Z           "evidence": []
2026-06-21T01:36:45.2181314Z         },
2026-06-21T01:36:45.2181409Z         "unit": {
2026-06-21T01:36:45.2181513Z           "complete": true,
2026-06-21T01:36:45.2181624Z           "evidence": [
2026-06-21T01:36:45.2181724Z             {
2026-06-21T01:36:45.2181862Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2181963Z               "line": 581
2026-06-21T01:36:45.2182067Z             },
2026-06-21T01:36:45.2182157Z             {
2026-06-21T01:36:45.2182297Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2182405Z               "line": 706
2026-06-21T01:36:45.2182495Z             },
2026-06-21T01:36:45.2182590Z             {
2026-06-21T01:36:45.2182715Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T01:36:45.2182824Z               "line": 384
2026-06-21T01:36:45.2182915Z             },
2026-06-21T01:36:45.2183015Z             {
2026-06-21T01:36:45.2183148Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:36:45.2183254Z               "line": 102
2026-06-21T01:36:45.2183354Z             },
2026-06-21T01:36:45.2183448Z             {
2026-06-21T01:36:45.2183578Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:36:45.2183687Z               "line": 123
2026-06-21T01:36:45.2183777Z             },
2026-06-21T01:36:45.2183874Z             {
2026-06-21T01:36:45.2184006Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T01:36:45.2184116Z               "line": 142
2026-06-21T01:36:45.2184213Z             },
2026-06-21T01:36:45.2184412Z             {
2026-06-21T01:36:45.2184542Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T01:36:45.2184645Z               "line": 582
2026-06-21T01:36:45.2184749Z             },
2026-06-21T01:36:45.2184845Z             {
2026-06-21T01:36:45.2184967Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T01:36:45.2185070Z               "line": 566
2026-06-21T01:36:45.2185167Z             },
2026-06-21T01:36:45.2185272Z             {
2026-06-21T01:36:45.2185390Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2185501Z               "line": 8256
2026-06-21T01:36:45.2185596Z             }
2026-06-21T01:36:45.2185787Z           ]
2026-06-21T01:36:45.2185887Z         }
2026-06-21T01:36:45.2185986Z       }
2026-06-21T01:36:45.2186087Z     },
2026-06-21T01:36:45.2186182Z     {
2026-06-21T01:36:45.2186282Z       "id": "REQ-UPD-5",
2026-06-21T01:36:45.2186441Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T01:36:45.2186549Z       "requiredStages": [
2026-06-21T01:36:45.2186650Z         "impl",
2026-06-21T01:36:45.2186751Z         "unit"
2026-06-21T01:36:45.2186854Z       ],
2026-06-21T01:36:45.2186955Z       "stages": {
2026-06-21T01:36:45.2187056Z         "doc": {
2026-06-21T01:36:45.2187160Z           "complete": false,
2026-06-21T01:36:45.2187265Z           "evidence": []
2026-06-21T01:36:45.2187365Z         },
2026-06-21T01:36:45.2187470Z         "impl": {
2026-06-21T01:36:45.2187579Z           "complete": true,
2026-06-21T01:36:45.2187683Z           "evidence": [
2026-06-21T01:36:45.2187769Z             {
2026-06-21T01:36:45.2187910Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2188019Z               "line": 27
2026-06-21T01:36:45.2188116Z             },
2026-06-21T01:36:45.2188224Z             {
2026-06-21T01:36:45.2188368Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2188463Z               "line": 87
2026-06-21T01:36:45.2188563Z             },
2026-06-21T01:36:45.2188654Z             {
2026-06-21T01:36:45.2188797Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2188906Z               "line": 145
2026-06-21T01:36:45.2189088Z             },
2026-06-21T01:36:45.2189183Z             {
2026-06-21T01:36:45.2189308Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2189412Z               "line": 492
2026-06-21T01:36:45.2189507Z             },
2026-06-21T01:36:45.2189608Z             {
2026-06-21T01:36:45.2189741Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2189837Z               "line": 546
2026-06-21T01:36:45.2189942Z             }
2026-06-21T01:36:45.2190037Z           ]
2026-06-21T01:36:45.2190121Z         },
2026-06-21T01:36:45.2190216Z         "int": {
2026-06-21T01:36:45.2190316Z           "complete": false,
2026-06-21T01:36:45.2190415Z           "evidence": []
2026-06-21T01:36:45.2190519Z         },
2026-06-21T01:36:45.2190624Z         "unit": {
2026-06-21T01:36:45.2190730Z           "complete": true,
2026-06-21T01:36:45.2190838Z           "evidence": [
2026-06-21T01:36:45.2190925Z             {
2026-06-21T01:36:45.2191064Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2191168Z               "line": 272
2026-06-21T01:36:45.2191264Z             },
2026-06-21T01:36:45.2191364Z             {
2026-06-21T01:36:45.2191502Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2191603Z               "line": 286
2026-06-21T01:36:45.2191697Z             },
2026-06-21T01:36:45.2191797Z             {
2026-06-21T01:36:45.2191927Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2192036Z               "line": 300
2026-06-21T01:36:45.2192141Z             },
2026-06-21T01:36:45.2192223Z             {
2026-06-21T01:36:45.2192365Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2192451Z               "line": 314
2026-06-21T01:36:45.2192646Z             },
2026-06-21T01:36:45.2192732Z             {
2026-06-21T01:36:45.2192876Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2192979Z               "line": 348
2026-06-21T01:36:45.2193074Z             },
2026-06-21T01:36:45.2193170Z             {
2026-06-21T01:36:45.2193299Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2193408Z               "line": 1071
2026-06-21T01:36:45.2193504Z             }
2026-06-21T01:36:45.2193590Z           ]
2026-06-21T01:36:45.2193694Z         }
2026-06-21T01:36:45.2193790Z       }
2026-06-21T01:36:45.2193890Z     },
2026-06-21T01:36:45.2194076Z     {
2026-06-21T01:36:45.2194181Z       "id": "REQ-UPD-6",
2026-06-21T01:36:45.2195024Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T01:36:45.2195135Z       "requiredStages": [
2026-06-21T01:36:45.2195238Z         "doc",
2026-06-21T01:36:45.2195337Z         "impl",
2026-06-21T01:36:45.2195443Z         "unit",
2026-06-21T01:36:45.2195541Z         "int"
2026-06-21T01:36:45.2195640Z       ],
2026-06-21T01:36:45.2195737Z       "stages": {
2026-06-21T01:36:45.2195832Z         "doc": {
2026-06-21T01:36:45.2195941Z           "complete": true,
2026-06-21T01:36:45.2196046Z           "evidence": [
2026-06-21T01:36:45.2196147Z             {
2026-06-21T01:36:45.2196293Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T01:36:45.2196400Z               "line": 3
2026-06-21T01:36:45.2196499Z             },
2026-06-21T01:36:45.2196599Z             {
2026-06-21T01:36:45.2196724Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T01:36:45.2196828Z               "line": 3
2026-06-21T01:36:45.2196928Z             },
2026-06-21T01:36:45.2197030Z             {
2026-06-21T01:36:45.2197205Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T01:36:45.2197316Z               "line": 3
2026-06-21T01:36:45.2197414Z             }
2026-06-21T01:36:45.2197515Z           ]
2026-06-21T01:36:45.2197611Z         },
2026-06-21T01:36:45.2197715Z         "impl": {
2026-06-21T01:36:45.2197820Z           "complete": true,
2026-06-21T01:36:45.2197931Z           "evidence": [
2026-06-21T01:36:45.2198030Z             {
2026-06-21T01:36:45.2198167Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2198272Z               "line": 76
2026-06-21T01:36:45.2198366Z             },
2026-06-21T01:36:45.2198470Z             {
2026-06-21T01:36:45.2198609Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2198704Z               "line": 212
2026-06-21T01:36:45.2198804Z             },
2026-06-21T01:36:45.2198904Z             {
2026-06-21T01:36:45.2199109Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2199214Z               "line": 69
2026-06-21T01:36:45.2199314Z             },
2026-06-21T01:36:45.2199418Z             {
2026-06-21T01:36:45.2199543Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2199652Z               "line": 133
2026-06-21T01:36:45.2199743Z             },
2026-06-21T01:36:45.2199848Z             {
2026-06-21T01:36:45.2199981Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2200091Z               "line": 243
2026-06-21T01:36:45.2200193Z             },
2026-06-21T01:36:45.2200282Z             {
2026-06-21T01:36:45.2200416Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2200522Z               "line": 406
2026-06-21T01:36:45.2200625Z             },
2026-06-21T01:36:45.2200719Z             {
2026-06-21T01:36:45.2200858Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2200956Z               "line": 534
2026-06-21T01:36:45.2201055Z             },
2026-06-21T01:36:45.2201281Z             {
2026-06-21T01:36:45.2201408Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2201514Z               "line": 548
2026-06-21T01:36:45.2201614Z             },
2026-06-21T01:36:45.2201713Z             {
2026-06-21T01:36:45.2201852Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2201953Z               "line": 603
2026-06-21T01:36:45.2202042Z             },
2026-06-21T01:36:45.2202139Z             {
2026-06-21T01:36:45.2202272Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2202372Z               "line": 634
2026-06-21T01:36:45.2202572Z             },
2026-06-21T01:36:45.2202667Z             {
2026-06-21T01:36:45.2202811Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T01:36:45.2202910Z               "line": 137
2026-06-21T01:36:45.2202996Z             },
2026-06-21T01:36:45.2203093Z             {
2026-06-21T01:36:45.2203215Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T01:36:45.2203326Z               "line": 184
2026-06-21T01:36:45.2203427Z             },
2026-06-21T01:36:45.2203525Z             {
2026-06-21T01:36:45.2203658Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2203759Z               "line": 78
2026-06-21T01:36:45.2203864Z             },
2026-06-21T01:36:45.2203958Z             {
2026-06-21T01:36:45.2204093Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2204202Z               "line": 114
2026-06-21T01:36:45.2204302Z             },
2026-06-21T01:36:45.2204403Z             {
2026-06-21T01:36:45.2204522Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2204636Z               "line": 185
2026-06-21T01:36:45.2204732Z             },
2026-06-21T01:36:45.2204827Z             {
2026-06-21T01:36:45.2204965Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2205061Z               "line": 260
2026-06-21T01:36:45.2205161Z             },
2026-06-21T01:36:45.2205260Z             {
2026-06-21T01:36:45.2205395Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2205504Z               "line": 292
2026-06-21T01:36:45.2205609Z             },
2026-06-21T01:36:45.2205709Z             {
2026-06-21T01:36:45.2205846Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2205955Z               "line": 323
2026-06-21T01:36:45.2206050Z             },
2026-06-21T01:36:45.2206144Z             {
2026-06-21T01:36:45.2206272Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2206374Z               "line": 346
2026-06-21T01:36:45.2206477Z             },
2026-06-21T01:36:45.2206578Z             {
2026-06-21T01:36:45.2206702Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2206806Z               "line": 388
2026-06-21T01:36:45.2206893Z             },
2026-06-21T01:36:45.2206993Z             {
2026-06-21T01:36:45.2207116Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2207222Z               "line": 398
2026-06-21T01:36:45.2207317Z             },
2026-06-21T01:36:45.2207421Z             {
2026-06-21T01:36:45.2207546Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2207650Z               "line": 410
2026-06-21T01:36:45.2207736Z             },
2026-06-21T01:36:45.2207837Z             {
2026-06-21T01:36:45.2207970Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2208075Z               "line": 420
2026-06-21T01:36:45.2208176Z             },
2026-06-21T01:36:45.2208276Z             {
2026-06-21T01:36:45.2208404Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2208515Z               "line": 439
2026-06-21T01:36:45.2208609Z             },
2026-06-21T01:36:45.2208713Z             {
2026-06-21T01:36:45.2208842Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2209011Z               "line": 449
2026-06-21T01:36:45.2209212Z             },
2026-06-21T01:36:45.2209297Z             {
2026-06-21T01:36:45.2209440Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2209536Z               "line": 94
2026-06-21T01:36:45.2209640Z             },
2026-06-21T01:36:45.2209725Z             {
2026-06-21T01:36:45.2209860Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2209964Z               "line": 120
2026-06-21T01:36:45.2210065Z             },
2026-06-21T01:36:45.2210165Z             {
2026-06-21T01:36:45.2210289Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2210389Z               "line": 135
2026-06-21T01:36:45.2210575Z             },
2026-06-21T01:36:45.2210675Z             {
2026-06-21T01:36:45.2210805Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2210904Z               "line": 162
2026-06-21T01:36:45.2211009Z             },
2026-06-21T01:36:45.2211106Z             {
2026-06-21T01:36:45.2211228Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2211327Z               "line": 174
2026-06-21T01:36:45.2211428Z             },
2026-06-21T01:36:45.2211526Z             {
2026-06-21T01:36:45.2211649Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2211745Z               "line": 185
2026-06-21T01:36:45.2211845Z             },
2026-06-21T01:36:45.2211939Z             {
2026-06-21T01:36:45.2212069Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2212179Z               "line": 451
2026-06-21T01:36:45.2212278Z             },
2026-06-21T01:36:45.2212375Z             {
2026-06-21T01:36:45.2212508Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2212612Z               "line": 573
2026-06-21T01:36:45.2212713Z             },
2026-06-21T01:36:45.2212799Z             {
2026-06-21T01:36:45.2212932Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2213042Z               "line": 171
2026-06-21T01:36:45.2213127Z             },
2026-06-21T01:36:45.2213227Z             {
2026-06-21T01:36:45.2213357Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.2213466Z               "line": 65
2026-06-21T01:36:45.2213561Z             },
2026-06-21T01:36:45.2213653Z             {
2026-06-21T01:36:45.2213785Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.2213886Z               "line": 71
2026-06-21T01:36:45.2213991Z             },
2026-06-21T01:36:45.2214090Z             {
2026-06-21T01:36:45.2214208Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T01:36:45.2214319Z               "line": 77
2026-06-21T01:36:45.2214410Z             },
2026-06-21T01:36:45.2214504Z             {
2026-06-21T01:36:45.2214624Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2214729Z               "line": 778
2026-06-21T01:36:45.2214828Z             },
2026-06-21T01:36:45.2214934Z             {
2026-06-21T01:36:45.2215063Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2215167Z               "line": 795
2026-06-21T01:36:45.2215278Z             },
2026-06-21T01:36:45.2215372Z             {
2026-06-21T01:36:45.2215491Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2215593Z               "line": 838
2026-06-21T01:36:45.2215696Z             },
2026-06-21T01:36:45.2215796Z             {
2026-06-21T01:36:45.2215912Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2216025Z               "line": 981
2026-06-21T01:36:45.2216116Z             },
2026-06-21T01:36:45.2216217Z             {
2026-06-21T01:36:45.2216340Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2216444Z               "line": 1131
2026-06-21T01:36:45.2216544Z             }
2026-06-21T01:36:45.2216643Z           ]
2026-06-21T01:36:45.2216747Z         },
2026-06-21T01:36:45.2216833Z         "int": {
2026-06-21T01:36:45.2216944Z           "complete": true,
2026-06-21T01:36:45.2217123Z           "evidence": [
2026-06-21T01:36:45.2217224Z             {
2026-06-21T01:36:45.2217385Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:36:45.2217487Z               "line": 569
2026-06-21T01:36:45.2217586Z             },
2026-06-21T01:36:45.2217671Z             {
2026-06-21T01:36:45.2217806Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T01:36:45.2217906Z               "line": 135
2026-06-21T01:36:45.2218005Z             }
2026-06-21T01:36:45.2218102Z           ]
2026-06-21T01:36:45.2218188Z         },
2026-06-21T01:36:45.2218292Z         "unit": {
2026-06-21T01:36:45.2218397Z           "complete": true,
2026-06-21T01:36:45.2218577Z           "evidence": [
2026-06-21T01:36:45.2218668Z             {
2026-06-21T01:36:45.2218803Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2218901Z               "line": 626
2026-06-21T01:36:45.2219075Z             },
2026-06-21T01:36:45.2219174Z             {
2026-06-21T01:36:45.2219297Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2219397Z               "line": 675
2026-06-21T01:36:45.2219496Z             },
2026-06-21T01:36:45.2219595Z             {
2026-06-21T01:36:45.2219729Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T01:36:45.2219834Z               "line": 696
2026-06-21T01:36:45.2219933Z             },
2026-06-21T01:36:45.2220024Z             {
2026-06-21T01:36:45.2220159Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2220257Z               "line": 513
2026-06-21T01:36:45.2220354Z             },
2026-06-21T01:36:45.2220439Z             {
2026-06-21T01:36:45.2220567Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2220668Z               "line": 638
2026-06-21T01:36:45.2220768Z             },
2026-06-21T01:36:45.2220877Z             {
2026-06-21T01:36:45.2220998Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2221106Z               "line": 675
2026-06-21T01:36:45.2221206Z             },
2026-06-21T01:36:45.2221303Z             {
2026-06-21T01:36:45.2221430Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2221531Z               "line": 947
2026-06-21T01:36:45.2221637Z             },
2026-06-21T01:36:45.2221736Z             {
2026-06-21T01:36:45.2221854Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2221964Z               "line": 969
2026-06-21T01:36:45.2222058Z             },
2026-06-21T01:36:45.2222157Z             {
2026-06-21T01:36:45.2222291Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2222396Z               "line": 986
2026-06-21T01:36:45.2222500Z             },
2026-06-21T01:36:45.2222586Z             {
2026-06-21T01:36:45.2222711Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2222820Z               "line": 1001
2026-06-21T01:36:45.2222921Z             },
2026-06-21T01:36:45.2223006Z             {
2026-06-21T01:36:45.2223134Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2223236Z               "line": 1027
2026-06-21T01:36:45.2223335Z             },
2026-06-21T01:36:45.2223430Z             {
2026-06-21T01:36:45.2223560Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T01:36:45.2223664Z               "line": 457
2026-06-21T01:36:45.2223764Z             },
2026-06-21T01:36:45.2223855Z             {
2026-06-21T01:36:45.2224002Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T01:36:45.2224098Z               "line": 338
2026-06-21T01:36:45.2224189Z             },
2026-06-21T01:36:45.2224288Z             {
2026-06-21T01:36:45.2224417Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2224509Z               "line": 10549
2026-06-21T01:36:45.2224603Z             },
2026-06-21T01:36:45.2224702Z             {
2026-06-21T01:36:45.2224811Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2225012Z               "line": 1260
2026-06-21T01:36:45.2225112Z             },
2026-06-21T01:36:45.2225213Z             {
2026-06-21T01:36:45.2225336Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T01:36:45.2225446Z               "line": 130
2026-06-21T01:36:45.2225551Z             }
2026-06-21T01:36:45.2225646Z           ]
2026-06-21T01:36:45.2225751Z         }
2026-06-21T01:36:45.2225852Z       }
2026-06-21T01:36:45.2225947Z     },
2026-06-21T01:36:45.2226042Z     {
2026-06-21T01:36:45.2226157Z       "id": "REQ-UPD-7",
2026-06-21T01:36:45.2228366Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T01:36:45.2228589Z       "requiredStages": [
2026-06-21T01:36:45.2228690Z         "impl",
2026-06-21T01:36:45.2228795Z         "unit"
2026-06-21T01:36:45.2228894Z       ],
2026-06-21T01:36:45.2229072Z       "stages": {
2026-06-21T01:36:45.2229167Z         "doc": {
2026-06-21T01:36:45.2229272Z           "complete": false,
2026-06-21T01:36:45.2229373Z           "evidence": []
2026-06-21T01:36:45.2229476Z         },
2026-06-21T01:36:45.2229587Z         "impl": {
2026-06-21T01:36:45.2229697Z           "complete": true,
2026-06-21T01:36:45.2229804Z           "evidence": [
2026-06-21T01:36:45.2229904Z             {
2026-06-21T01:36:45.2230028Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2230126Z               "line": 2626
2026-06-21T01:36:45.2230226Z             }
2026-06-21T01:36:45.2230332Z           ]
2026-06-21T01:36:45.2230418Z         },
2026-06-21T01:36:45.2230517Z         "int": {
2026-06-21T01:36:45.2230623Z           "complete": false,
2026-06-21T01:36:45.2230728Z           "evidence": []
2026-06-21T01:36:45.2230817Z         },
2026-06-21T01:36:45.2230928Z         "unit": {
2026-06-21T01:36:45.2231028Z           "complete": true,
2026-06-21T01:36:45.2231132Z           "evidence": [
2026-06-21T01:36:45.2231233Z             {
2026-06-21T01:36:45.2231352Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2231457Z               "line": 10525
2026-06-21T01:36:45.2231558Z             }
2026-06-21T01:36:45.2231666Z           ]
2026-06-21T01:36:45.2231766Z         }
2026-06-21T01:36:45.2231863Z       }
2026-06-21T01:36:45.2231958Z     },
2026-06-21T01:36:45.2232053Z     {
2026-06-21T01:36:45.2232164Z       "id": "REQ-UPD-8",
2026-06-21T01:36:45.2234740Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T01:36:45.2234862Z       "requiredStages": [
2026-06-21T01:36:45.2234963Z         "impl",
2026-06-21T01:36:45.2235054Z         "unit"
2026-06-21T01:36:45.2235149Z       ],
2026-06-21T01:36:45.2235253Z       "stages": {
2026-06-21T01:36:45.2235473Z         "doc": {
2026-06-21T01:36:45.2235577Z           "complete": false,
2026-06-21T01:36:45.2235682Z           "evidence": []
2026-06-21T01:36:45.2235783Z         },
2026-06-21T01:36:45.2235887Z         "impl": {
2026-06-21T01:36:45.2235987Z           "complete": true,
2026-06-21T01:36:45.2236093Z           "evidence": [
2026-06-21T01:36:45.2236183Z             {
2026-06-21T01:36:45.2236330Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2236426Z               "line": 77
2026-06-21T01:36:45.2236531Z             },
2026-06-21T01:36:45.2236631Z             {
2026-06-21T01:36:45.2236769Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2236965Z               "line": 49
2026-06-21T01:36:45.2237060Z             },
2026-06-21T01:36:45.2237160Z             {
2026-06-21T01:36:45.2237299Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2237404Z               "line": 152
2026-06-21T01:36:45.2237502Z             },
2026-06-21T01:36:45.2240133Z             {
2026-06-21T01:36:45.2240309Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2240412Z               "line": 215
2026-06-21T01:36:45.2240518Z             },
2026-06-21T01:36:45.2240621Z             {
2026-06-21T01:36:45.2240772Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2240883Z               "line": 230
2026-06-21T01:36:45.2240978Z             },
2026-06-21T01:36:45.2241072Z             {
2026-06-21T01:36:45.2241207Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2241316Z               "line": 247
2026-06-21T01:36:45.2241411Z             },
2026-06-21T01:36:45.2241512Z             {
2026-06-21T01:36:45.2241645Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2241755Z               "line": 269
2026-06-21T01:36:45.2241856Z             },
2026-06-21T01:36:45.2241951Z             {
2026-06-21T01:36:45.2242099Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2242208Z               "line": 66
2026-06-21T01:36:45.2242308Z             },
2026-06-21T01:36:45.2242409Z             {
2026-06-21T01:36:45.2242537Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2242641Z               "line": 154
2026-06-21T01:36:45.2242743Z             },
2026-06-21T01:36:45.2242838Z             {
2026-06-21T01:36:45.2242960Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2243070Z               "line": 2430
2026-06-21T01:36:45.2243160Z             },
2026-06-21T01:36:45.2243253Z             {
2026-06-21T01:36:45.2243373Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2243478Z               "line": 2493
2026-06-21T01:36:45.2243577Z             },
2026-06-21T01:36:45.2243673Z             {
2026-06-21T01:36:45.2243788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2243887Z               "line": 2503
2026-06-21T01:36:45.2243987Z             },
2026-06-21T01:36:45.2244089Z             {
2026-06-21T01:36:45.2244193Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2244292Z               "line": 2510
2026-06-21T01:36:45.2244389Z             },
2026-06-21T01:36:45.2244483Z             {
2026-06-21T01:36:45.2244603Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2244699Z               "line": 2627
2026-06-21T01:36:45.2244798Z             },
2026-06-21T01:36:45.2244893Z             {
2026-06-21T01:36:45.2245024Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2245131Z               "line": 480
2026-06-21T01:36:45.2245228Z             },
2026-06-21T01:36:45.2245329Z             {
2026-06-21T01:36:45.2245446Z               "path": "crates/xtask/src/main.rs",
2026-06-21T01:36:45.2245552Z               "line": 494
2026-06-21T01:36:45.2245648Z             }
2026-06-21T01:36:45.2245747Z           ]
2026-06-21T01:36:45.2245851Z         },
2026-06-21T01:36:45.2245951Z         "int": {
2026-06-21T01:36:45.2246057Z           "complete": false,
2026-06-21T01:36:45.2246295Z           "evidence": []
2026-06-21T01:36:45.2246395Z         },
2026-06-21T01:36:45.2246490Z         "unit": {
2026-06-21T01:36:45.2246596Z           "complete": true,
2026-06-21T01:36:45.2246700Z           "evidence": [
2026-06-21T01:36:45.2246804Z             {
2026-06-21T01:36:45.2246953Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T01:36:45.2247058Z               "line": 476
2026-06-21T01:36:45.2247153Z             },
2026-06-21T01:36:45.2247249Z             {
2026-06-21T01:36:45.2247396Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T01:36:45.2247496Z               "line": 580
2026-06-21T01:36:45.2247686Z             },
2026-06-21T01:36:45.2247787Z             {
2026-06-21T01:36:45.2247908Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2248015Z               "line": 10527
2026-06-21T01:36:45.2248110Z             },
2026-06-21T01:36:45.2248211Z             {
2026-06-21T01:36:45.2248332Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2248441Z               "line": 10549
2026-06-21T01:36:45.2248538Z             }
2026-06-21T01:36:45.2248633Z           ]
2026-06-21T01:36:45.2248727Z         }
2026-06-21T01:36:45.2248818Z       }
2026-06-21T01:36:45.2248924Z     },
2026-06-21T01:36:45.2249099Z     {
2026-06-21T01:36:45.2249205Z       "id": "REQ-UPD-9",
2026-06-21T01:36:45.2251881Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T01:36:45.2252010Z       "requiredStages": [
2026-06-21T01:36:45.2252110Z         "doc",
2026-06-21T01:36:45.2252215Z         "impl",
2026-06-21T01:36:45.2252310Z         "unit"
2026-06-21T01:36:45.2252411Z       ],
2026-06-21T01:36:45.2252506Z       "stages": {
2026-06-21T01:36:45.2252611Z         "doc": {
2026-06-21T01:36:45.2252721Z           "complete": true,
2026-06-21T01:36:45.2252829Z           "evidence": [
2026-06-21T01:36:45.2252925Z             {
2026-06-21T01:36:45.2253031Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.2253125Z               "line": 93
2026-06-21T01:36:45.2253225Z             },
2026-06-21T01:36:45.2253327Z             {
2026-06-21T01:36:45.2253445Z               "path": "docs/MANIFEST.md",
2026-06-21T01:36:45.2253544Z               "line": 285
2026-06-21T01:36:45.2253649Z             }
2026-06-21T01:36:45.2253743Z           ]
2026-06-21T01:36:45.2253842Z         },
2026-06-21T01:36:45.2253943Z         "impl": {
2026-06-21T01:36:45.2254058Z           "complete": true,
2026-06-21T01:36:45.2254166Z           "evidence": [
2026-06-21T01:36:45.2254262Z             {
2026-06-21T01:36:45.2254415Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2254514Z               "line": 128
2026-06-21T01:36:45.2254615Z             },
2026-06-21T01:36:45.2254705Z             {
2026-06-21T01:36:45.2254838Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2254944Z               "line": 533
2026-06-21T01:36:45.2255043Z             },
2026-06-21T01:36:45.2255139Z             {
2026-06-21T01:36:45.2255279Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2255383Z               "line": 459
2026-06-21T01:36:45.2255483Z             },
2026-06-21T01:36:45.2255677Z             {
2026-06-21T01:36:45.2255816Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2255918Z               "line": 505
2026-06-21T01:36:45.2256020Z             },
2026-06-21T01:36:45.2256112Z             {
2026-06-21T01:36:45.2256247Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2256354Z               "line": 928
2026-06-21T01:36:45.2256453Z             },
2026-06-21T01:36:45.2256545Z             {
2026-06-21T01:36:45.2256669Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T01:36:45.2256773Z               "line": 302
2026-06-21T01:36:45.2256960Z             },
2026-06-21T01:36:45.2257064Z             {
2026-06-21T01:36:45.2257190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2257285Z               "line": 5675
2026-06-21T01:36:45.2257388Z             },
2026-06-21T01:36:45.2257475Z             {
2026-06-21T01:36:45.2257598Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2257703Z               "line": 5720
2026-06-21T01:36:45.2257804Z             },
2026-06-21T01:36:45.2257908Z             {
2026-06-21T01:36:45.2258018Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2258124Z               "line": 5857
2026-06-21T01:36:45.2258218Z             },
2026-06-21T01:36:45.2258323Z             {
2026-06-21T01:36:45.2258439Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2258538Z               "line": 5878
2026-06-21T01:36:45.2258642Z             },
2026-06-21T01:36:45.2258732Z             {
2026-06-21T01:36:45.2258855Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2259040Z               "line": 5901
2026-06-21T01:36:45.2259141Z             },
2026-06-21T01:36:45.2259250Z             {
2026-06-21T01:36:45.2259364Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2259470Z               "line": 5928
2026-06-21T01:36:45.2259564Z             }
2026-06-21T01:36:45.2259669Z           ]
2026-06-21T01:36:45.2259770Z         },
2026-06-21T01:36:45.2259869Z         "int": {
2026-06-21T01:36:45.2259969Z           "complete": false,
2026-06-21T01:36:45.2260080Z           "evidence": []
2026-06-21T01:36:45.2260180Z         },
2026-06-21T01:36:45.2260274Z         "unit": {
2026-06-21T01:36:45.2260381Z           "complete": true,
2026-06-21T01:36:45.2260480Z           "evidence": [
2026-06-21T01:36:45.2260571Z             {
2026-06-21T01:36:45.2260719Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T01:36:45.2260828Z               "line": 259
2026-06-21T01:36:45.2260928Z             },
2026-06-21T01:36:45.2261016Z             {
2026-06-21T01:36:45.2261152Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T01:36:45.2261253Z               "line": 657
2026-06-21T01:36:45.2261354Z             },
2026-06-21T01:36:45.2261452Z             {
2026-06-21T01:36:45.2261590Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T01:36:45.2261699Z               "line": 1107
2026-06-21T01:36:45.2261783Z             },
2026-06-21T01:36:45.2261878Z             {
2026-06-21T01:36:45.2261993Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2262093Z               "line": 7565
2026-06-21T01:36:45.2262192Z             }
2026-06-21T01:36:45.2262285Z           ]
2026-06-21T01:36:45.2262389Z         }
2026-06-21T01:36:45.2262484Z       }
2026-06-21T01:36:45.2262585Z     },
2026-06-21T01:36:45.2262666Z     {
2026-06-21T01:36:45.2262775Z       "id": "REQ-WHOAMI-1",
2026-06-21T01:36:45.2264493Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T01:36:45.2264716Z       "requiredStages": [
2026-06-21T01:36:45.2264812Z         "doc",
2026-06-21T01:36:45.2264918Z         "impl",
2026-06-21T01:36:45.2265017Z         "unit"
2026-06-21T01:36:45.2265117Z       ],
2026-06-21T01:36:45.2265218Z       "stages": {
2026-06-21T01:36:45.2265318Z         "doc": {
2026-06-21T01:36:45.2265427Z           "complete": true,
2026-06-21T01:36:45.2265533Z           "evidence": [
2026-06-21T01:36:45.2265633Z             {
2026-06-21T01:36:45.2265742Z               "path": "CONTEXT.md",
2026-06-21T01:36:45.2265853Z               "line": 707
2026-06-21T01:36:45.2266071Z             }
2026-06-21T01:36:45.2266172Z           ]
2026-06-21T01:36:45.2266256Z         },
2026-06-21T01:36:45.2266362Z         "impl": {
2026-06-21T01:36:45.2266463Z           "complete": true,
2026-06-21T01:36:45.2266562Z           "evidence": [
2026-06-21T01:36:45.2266667Z             {
2026-06-21T01:36:45.2266788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2266896Z               "line": 3190
2026-06-21T01:36:45.2266981Z             },
2026-06-21T01:36:45.2267086Z             {
2026-06-21T01:36:45.2267206Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2267300Z               "line": 3218
2026-06-21T01:36:45.2267400Z             }
2026-06-21T01:36:45.2267501Z           ]
2026-06-21T01:36:45.2267605Z         },
2026-06-21T01:36:45.2267697Z         "int": {
2026-06-21T01:36:45.2267806Z           "complete": false,
2026-06-21T01:36:45.2267910Z           "evidence": []
2026-06-21T01:36:45.2268001Z         },
2026-06-21T01:36:45.2268093Z         "unit": {
2026-06-21T01:36:45.2268202Z           "complete": true,
2026-06-21T01:36:45.2268306Z           "evidence": [
2026-06-21T01:36:45.2268403Z             {
2026-06-21T01:36:45.2268521Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2268621Z               "line": 7847
2026-06-21T01:36:45.2268723Z             },
2026-06-21T01:36:45.2268830Z             {
2026-06-21T01:36:45.2268931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T01:36:45.2269112Z               "line": 7900
2026-06-21T01:36:45.2269207Z             }
2026-06-21T01:36:45.2269302Z           ]
2026-06-21T01:36:45.2269401Z         }
2026-06-21T01:36:45.2269481Z       }
2026-06-21T01:36:45.2269575Z     }
2026-06-21T01:36:45.2269672Z   ],
2026-06-21T01:36:45.2269777Z   "findings": []
2026-06-21T01:36:45.2269876Z }
